str.translate不从文件名中删除字符(数字和空格)

时间:2019-03-06 20:57:11

标签: python python-3.x string

我正在使用python 3.7执行以下代码,以重命名多个文件,并删除文件名中的所有数字或空格。但是,在检索文件列表时,没有文件被重命名。有什么原因吗?

结果在代码下方。

import os

def rename_files():
    # get files names
    curr_dir = os.getcwd()
    print("Current WD: ",curr_dir)
    os.chdir(r"c:\udacity_files\prank")
    new_dir = os.getcwd()
    print("New WD: ",new_dir)
    file_list = os.listdir()
    for file_name in file_list:
        os.rename(file_name, file_name.translate("0123456789 "))
    new_list = os.listdir()
    print("New List: ", new_list)
    os.chdir(curr_dir)
    print("Restored WD: ",curr_dir)

rename_files()

输出:

Current WD:  C:\Users\qtbxxxx
New WD:  c:\udacity_files\prank
3New List:  ['16los angeles.jpg', '17cairo.jpg', '22rochester.jpg', '25madrid.jpg', '28houston.jpg', '29bristol.jpg', '29buenos aires.jpg', '2chennai.jpg', '2hyderabad.jpg', '35miami.jpg', '36sydney.jpg']
Restored WD:  C:\Users\qtbxxxx

1 个答案:

答案 0 :(得分:2)

您需要在Python 3中提供包含str.maketrans的翻译映射,以使translate正常工作。有关更多信息,请参见docs。您可以尝试以下操作:

os.rename(file_name, file_name.translate(str.maketrans('', '', '0123456789 ')))

str.maketrans的前两个参数与您的使用无关,因此只需将它们保留为空字符串即可。第三个参数定义要删除的字符。