这是我的代码:
import os
def rename_file ():
file_list = os.listdir (r"C:\Users\Sushant\Desktop\test")
print (file_list)
for file_name in file_list:
os.rename(file_name, file_name.translate(None , "0123456789" ))
rename_file ()
结果:
os.rename(file_name, file_name.translate(None , "0123456789" ))
TypeError: translate() takes exactly one argument (2 given)
为什么我一直这样error
?我刚刚保存了一个包含一些数字的文件,并希望将其删除。
答案 0 :(得分:1)
您使用的翻译方法错误。 translate方法需要一个由maketrans方法创建的字典。
output = ("abcdefabc").translate(str.maketrans("abc", "123"))
打印将读出:123def123
答案 1 :(得分:1)
我猜您正在使用Python3
,因为这是Python2
中的有效语法。对于Python3
,请使用以下内容:
import os
def rename_file():
file_list = os.listdir(r"C:\Users\Sushant\Desktop\test")
print(file_list)
for file_name in file_list:
os.rename(file_name, file_name.translate(str.maketrans("", "", "0123456789")))
rename_file()
这里是maketrans功能的文档。
答案 2 :(得分:0)
使用translate()
时,您必须传递maketrans()
作为第一个参数的表格。这是因为您传递TypeError
而获得None
的原因。
使用maketrans()
,您可以在一个字符串中传入要更改的字符。第二个参数是一个字符串,其中包含您要放在其中的字符。此函数返回一个表,然后将其传递到translate()
。
在你的情况下,这样的事情会起作用。
file_name.translate(str.maketrans("", "", "0123456789"))
进一步阅读maketrans()和translate()