我是新编程人员,正在尝试使用python中的小程序“重命名”文件夹中的文件。当我运行程序时,它显示了文件夹中的所有文件,但显示错误“ AttributeError:'列表'对象没有属性'translate'”。我没弄错我在哪里以及实际在寻找什么代码。
import string
import os
def Rename_files():
Files = os.listdir(r"F:\New folder")
print(Files)
os.chdir(r"F:\New folder")
n = os.getcwd()
print("Current Working Directory is "+n)
for var in Files:
os.rename(Files,Files.translate(None,"_"))
Rename_files()
输出如下:
['DSC_1041.JPG', 'DSC_1068.JPG', 'DSC_1139.JPG', 'DSC_1160.JPG',
'DSC_1172.JPG', 'DSC_1238.JPG', 'DSC_1244.JPG', 'DSC_1245.JPG']
Current Working Directory is F:\New folder
Traceback (most recent call last):
File "C:\Users\MyPC\AppData\Local\Programs\Python\Python37-32
\Second.py", line 14, in <module>
Rename_files()
File "C:\Users\MyPC\AppData\Local\Programs\Python\Python37-32
\Second.py", line 13, in Rename_files
os.rename(Files,Files.translate(None,"_"))
AttributeError: 'list' object has no attribute 'translate'
预先感谢
答案 0 :(得分:0)
在此循环中,您尝试重命名列表对象,而不是重命名实际的元素(文件)。
for var in Files:
os.rename(Files,Files.translate(None,"_"))
您应该做的是将Files
替换为var
,这是您的列表元素,如下所示:
for var in Files:
os.rename(var,var.translate(None,"_"))
答案 1 :(得分:0)
在for loop
内,您必须使用var
而不是Files
。对于重命名文件,您可以使用replace()
代替translate()
试试这个:
import os
def Rename_files():
Files = os.listdir(r"E:\New folder")
print(Files)
os.chdir(r"E:\New folder")
n = os.getcwd()
print("Current Working Directory is " + n)
for var in Files:
os.rename(var, var.replace(" ", "_"))
Rename_files()