我正在尝试重命名文件夹中的多个mp3文件。他们从“加州1号酒店-老鹰”之类的开始。我希望它只是“加州鹰酒店”。 另外,可能还有一个“05加州酒店-老鹰”,这意味着从不同的文件中删除号码会产生重复,这是我面临的问题。我想要它替换现有的文件/覆盖/删除其中的一个或任何解决方案。 P、 在“1234567890”中添加“3”将从.mp3扩展名中删除“3”
我不熟悉python,但下面是我用来实现它的代码
import os
def renamefiles():
list = os.listdir(r"E:\NEW")
print(list)
path = os.getcwd()
print(path)
os.chdir(r"E:\NEW")
for name in list:
os.rename(name, name.translate(None, "124567890 "))
os.chdir(path)
renamefiles()
这是我得到的错误 WindowsError:[Error 183]如果文件已存在,则无法创建该文件
任何关于如何正确重命名文件的帮助将不胜感激!在
而不是使用名称.翻译,导入re-lib(正则表达式)并使用类似
作为你的模式。然后你可以使用
^{pr2}$作为你的改名。在
对于处理多个文件,请添加一个if语句,该语句检查该文件是否已存在于库中,如下所示:
其中dirpath是要签入的目录
您可以捕获
OSError
,也可以使用glob
来查找.mp3文件:当你发现错误时,你应该怎么做取决于你自己,你可以保存一些找到的名字的记录,并为每个名字增加一个计数,或者保持原样。在
如果数字总是在开头,你也可以直接删除,这样你就可以安全地使用3:
^{pr2}$使用示例字符串之一:
使用原始方法无法像删除所有空间那样按预期工作:
如果不在乎哪个文件被覆盖,可以使用
shutil.move
:另一方面,不要使用
list
作为变量名。在您需要验证所更改的名称是否确实更改了。如果名称中没有数字或空格,
translate
将返回相同的字符串,您将尝试将name
重命名为name
,而Windows拒绝该字符串。尝试:注意,如果文件目标存在,这仍然会失败,如果您意外地将两个名称合并为一个,您可能会希望这样做。但是如果您想要静默替换行为,如果您使用的是python3.3或更高版本,可以将
os.rename
更改为os.replace
以静默重写;在早期的Python中,可以在调用os.rename
之前显式地os.remove
。在相关问题 更多 >
编程相关推荐