我是python的新手。我在执行代码时遇到错误:** 如下所示:
File "C:/Users/shashipau/PycharmProjects/FirstProject/rename.py", line 14, in <module>
rename_files()
File "C:/Users/shashipau/PycharmProjects/FirstProject/rename.py", line 10, in rename_files
os.rename(re_file, re_file.translate(None, "0123456789"))
TypeError: translate() takes exactly one argument (2 given)
Process finished with exit code 1
我的代码是:
import os
def rename_files():
sxlist_file = os.listdir(r"D:\Python Te\PythomProgram\prank")
os.chdir(r"D:\Python Te\PythomProgram\prank")
save_path = os.getcwd()
print(sxlist_file)
for re_file in sxlist_file:
os.rename(re_file, re_file.translate(None, "0123456789"))
os.chdir(save_path)
rename_files()
答案 0 :(得分:0)
正如您在method's documentation中看到的那样,translate()
只需要一个参数。您正在None
发送"0123456789"
和re_file.translate(None, "0123456789")
。
此外,该方法不会像你明显想象的那样string
,因为它也在文档中说明。
该表必须是通过
__getitem__()
实现索引的对象,通常是映射或序列。
要创建此对象,请使用maketrans方法。
答案 1 :(得分:0)
首先,我觉得有必要告诉你运行这个程序的想法有多糟糕。即使是恶作剧。
有了这个,这是一个了解错误消息的机会。让我们拆开错误信息,看看它告诉我们什么。
File "C:/Users/shashipau/PycharmProjects/FirstProject/rename.py", line 14, in <module>
rename_files()
首先我们有回溯,这不是错误本身,但显示了为返回错误的函数所做的调用。第一行显示函数调用的文件和行号。第二个显示了呼叫的内容。从这里我们可以看出,在rename.py的第14行,没有参数调用了rename_files()。
File "C:/Users/shashipau/PycharmProjects/FirstProject/rename.py", line 10, in rename_files
os.rename(re_file, re_file.translate(None, "0123456789"))
TypeError: translate() takes exactly one argument (2 given)
下一组行是在这种情况下发生错误的地方。我们可以看到上一节中讨论的相同信息以及错误消息。 消息告诉我们,函数translate()有一个额外的参数。我们现在可以回顾错误返回的行,并看到对translate()的函数调用有两个参数,None和“0123456789”。使用修复此错误的单个参数替换它们。
修复错误后,一切都无法正常工作! 如果我们看一下documentation,我们可以看到预期的参数是一个转换表,可以通过调用str.maketrans()生成。因此,您的代码可以更改为以下内容:
import os
def rename_files():
trans_table = str.maketrans("abcdefghij", "0123456789")
sxlist_file = os.listdir(r"D:\Python Te\PythomProgram\prank")
os.chdir(r"D:\Python Te\PythomProgram\prank")
save_path = os.getcwd()
print(sxlist_file)
for re_file in sxlist_file:
os.rename(re_file, re_file.translate(trans_table))
os.chdir(save_path)
rename_files()
请为了上帝的爱,不要运行此代码。给它一个文件来重命名,不要扫描文件。特别是当你是python的新手时,你可能会做错事,并无意中重命名了许多你不想要的文件。