Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名文件名_Python_File Rename - Fatal编程技术网

Python 重命名文件名

Python 重命名文件名,python,file-rename,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

这是我的密码:

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)

为什么我总是收到这个
错误
?我刚刚保存了一个带有一些数字的文件,希望将其删除。

您使用的翻译方法错误。translate方法需要maketrans方法创建的dict

output=(“abcdefabc”).translate(str.maketrans(“abc”,“123”))

打印内容将显示:123def123

我猜您使用的是
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()
这是函数的文档。

使用
translate()
时,必须传入由
maketrans()
生成的表作为第一个参数。这就是为什么会出现
TypeError
,因为您正在传入
None

使用
maketrans()
可以在一个字符串中传入要更改的字符。第二个参数是一个字符串,其中包含要放置的字符。此函数返回一个表,然后将其传递到
translate()

在你的情况下,像这样的事情会起作用

file_name.translate(str.maketrans("", "", "0123456789"))

进一步阅读并

从翻译参数中删除None您应该更仔细地阅读编译器错误,它都写在那里:它抱怨翻译函数只接受一个参数,但您试图传递两个
translate(None,“0123456789”)
实际上,
string.translate
可以接受两个参数,如本文所述。所以,维克多,你的评论没有帮助。