我正在使用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
答案 0 :(得分:2)
您需要在Python 3中提供包含str.maketrans
的翻译映射,以使translate
正常工作。有关更多信息,请参见docs。您可以尝试以下操作:
os.rename(file_name, file_name.translate(str.maketrans('', '', '0123456789 ')))
str.maketrans
的前两个参数与您的使用无关,因此只需将它们保留为空字符串即可。第三个参数定义要删除的字符。