我想重命名一个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)
从documentation of os.path.join:
智能地连接一个或多个路径组件。返回值是路径和* path的任何成员的连接,每个非空部分之后都带有一个单独的目录分隔符(os.sep),除了最后一部分,这意味着如果最后一部分为空,结果将仅以分隔符结尾。如果组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。
在Windows上,遇到绝对路径成分(例如r'\ foo')时,不会重置驱动器号。如果某个组件包含驱动器号,则会丢弃所有先前的组件,并重置驱动器号。请注意,由于每个驱动器都有一个当前目录,所以os.path.join(“ c:”,“ foo”)表示相对于驱动器C:(c:foo)上当前目录的路径,而不是c:\ foo 。
请注意最后一行,它记录了Windows上的一种特殊情况(另请参见answer on 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))
关于python - OSError:[WinError 123]文件名,目录名称或卷标签语法不正确:[Python],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60369372/