重命名文件名

时间:2017-07-27 07:30:43

标签: python file-rename

这是我的代码:

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?我刚刚保存了一个包含一些数字的文件,并希望将其删除。

3 个答案:

答案 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()