[英]OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect
[英]OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: [Python]
我想重命名一個 mp3 文件。
os.rename(f'C:\\Users\\axeld\\Desktop\\Music\\NG Trial\\{item}',
f'C:\\Users\\axeld\\Desktop\\Music\\NG Trial\\{Song_name}')
但我得到這個錯誤:
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\\Users\\axeld\\Desktop\\Music\\NG Trial\\109650.mp3' -> 'C:\\Users\\axeld\\Desktop\\Music\\NG Trial\\Operation: Evolution.mp3'
我 100% 確定該文件在那里,那么為什么我會收到此錯誤?
我沒有 Windows 盒子可以試穿,但是你考慮過使用os.path.join
來創建路徑嗎?
basedir = os.path.join('C:/', 'Users', 'axeld', 'Desktop', 'Music', 'NG Trial')
old_name = os.path.join(basedir, item)
new_name = os.path.join(basedir, song_name)
os.rename(old_name, new_name)
智能地加入一個或多個路徑組件。 返回值是 path 和 *paths 的任何成員的串聯,每個非空部分(最后一部分除外)后面只有一個目錄分隔符(os.sep),這意味着如果最后一部分為空,結果將僅以分隔符結尾. 如果組件是絕對路徑,則所有先前的組件都將被丟棄,並從絕對路徑組件繼續連接。
在 Windows 上,當遇到絕對路徑組件(例如 r'\foo')時,不會重置驅動器號。 如果一個組件包含驅動器盤符,則所有以前的組件都將被丟棄,並且驅動器盤符將被重置。 請注意,由於每個驅動器都有一個當前目錄,因此 os.path.join("c:", "foo") 表示相對於驅動器 C: (c:foo) 上當前目錄的路徑,而不是 c:\foo .
請注意最后一行,它記錄了 Windows 上的一個特殊情況(另請參閱SO 上的這個答案:這就是為什么在我上面的代碼中C:
之后有正斜杠。
根據評論, os.path.join
解決方案仍然會出錯。 作為解決方法,您可以使用原始字符串:
os.rename(
r'C:\Users\axeld\Desktop\Music\NG Trial\{}'.format(item),
r'C:\Users\axeld\Desktop\Music\NG Trial\{}'.format(song_name))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.