import os
def rename_files():
file_list = os.listdir(r"D:\360Downloads\test")
saved_path = os.getcwd()
os.chdir(r"D:\360Downloads\test")
for file_name in file_list:
os.rename(file_name, file_name.translate(None,"0123456789"))
rename_files()
错误消息为TypeError: translate() takes exactly one argument (2 given)
。如何格式化以使translate()
不返回错误?
答案 0 :(得分:1)
希望这有帮助!
os.rename(file_name,file_name.translate(str.maketrans('','','0123456789')))
或
os.rename(file_name,file_name.translate({ ord(i) : None for i in '0123456789' }))
<强>解释强>
我认为你正在使用Python 3.x和Python 2.x的语法。在Python 3.x translate()语法是
str.translate(表)
只接受一个参数,而不像Python {x,其中translate()语法是
str.translate(table [,deletechars])
可能需要多个参数。
我们可以使用 maketrans 功能轻松制作翻译表。 在这种情况下,在前两个参数中,我们将 nothing 替换为 nothing ,在第三个参数中,我们指定要删除的字符。
我们也可以使用字典手动制作翻译表,其中键包含之前的的ASCII,并且字符后包含的ASCII。如果我们想要删除某些字符值必须是无。 即如果我们想用'a'替换'A'并在字符串中删除'1',那么我们的字典就像这样
{65:97,49:无}