Error: TypeError: translate() takes one argument (2 given)
Error: TypeError: translate() takes one argument (2 given)
我是 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()
正如您在 method's documentation 中看到的那样,translate()
只需要一个参数。您正在 re_file.translate(None, "0123456789")
.
中发送 None
和 "0123456789"
此外,该方法并不像您显然认为的那样期望 string
,正如文档中所述。
The table must be an object that implements indexing via __getitem__()
, typically a mapping or sequence.
要创建此对象,请使用 maketrans 方法。
首先,我觉得有必要告诉您 运行 这个程序的想法有多糟糕。甚至是恶作剧。
除此之外,这是了解错误消息的机会。让我们拆开错误信息,看看它告诉我们什么。
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”。用修复 this error.
的单个参数替换它们
修复该错误后,一切仍将无法正常工作!
如果我们看一下documentation, we can see the expected argument is a translation table which can be generated by calling 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 的新手时,您可能会做错事并无意中重命名很多您不希望重命名的文件。
我是 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()
正如您在 method's documentation 中看到的那样,translate()
只需要一个参数。您正在 re_file.translate(None, "0123456789")
.
None
和 "0123456789"
此外,该方法并不像您显然认为的那样期望 string
,正如文档中所述。
The table must be an object that implements indexing via
__getitem__()
, typically a mapping or sequence.
要创建此对象,请使用 maketrans 方法。
首先,我觉得有必要告诉您 运行 这个程序的想法有多糟糕。甚至是恶作剧。
除此之外,这是了解错误消息的机会。让我们拆开错误信息,看看它告诉我们什么。
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”。用修复 this error.
的单个参数替换它们修复该错误后,一切仍将无法正常工作! 如果我们看一下documentation, we can see the expected argument is a translation table which can be generated by calling 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 的新手时,您可能会做错事并无意中重命名很多您不希望重命名的文件。