我想编写一个python程序来重命名文件夹中的所有文件,以便从文件名中删除数字,例如:chicago65.jpg将重命名为chicago.jpg。
下面是我的代码,但我收到错误,因为translate()只需要1个参数。请帮忙解决这个问题
import os
def rename_files():
file_list=os.listdir(r"C:\Users\manishreddy\Desktop\udacity\Secret Message\prank\prank")
print(file_list)
os.chdir(r"C:\Users\manishreddy\Desktop\udacity\Secret Message\prank\prank")
for file_temp in file_list:
os.rename(file_temp,file_temp.translate(None,"0123456789"))
rename_files()
答案 0 :(得分:3)
您在Python 3中使用Python 2 str.translate()
签名。方法takes only 1 argument,从代码点(整数)到替换的映射或None
删除该代码点。 / p>
您可以使用str.maketrans()
static method创建映射:
os.rename(
file_temp,
file_temp.translate(str.maketrans('', '', '0123456789'))
)
顺便说一下,这也是Python 2 unicode.translate()
的工作方式。
答案 1 :(得分:0)
如果您要完成的所有事情是在Python 3中执行与Python 2中相同的操作,那么这就是我在Python 2.0中所做的,以丢弃标点符号和数字:
text = text.translate(None, string.punctuation)
text = text.translate(None, '1234567890')
这是我的Python 3.0等效版本:
text = text.translate(str.maketrans('','',string.punctuation))
text = text.translate(str.maketrans('','','1234567890'))
基本上,它说的是“什么都没有翻译成无内容”(前两个参数),并将所有标点符号或数字都转化为“无”(即删除它们)。