我正在使用 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
您需要str.maketrans
在 Python 3 中提供一个翻译映射translate
才能工作。有关更多信息,请参阅文档。您可以尝试以下方法:
os.rename(file_name, file_name.translate(str.maketrans('', '', '0123456789 ')))
for 的前两个参数str.maketrans
与您的使用无关,因此将它们保留为空字符串。第三个参数定义要删除的字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句