“如何修复” AttributeError:“列表”对象没有属性“翻译”

时间:2019-01-27 09:08:20

标签: python-3.x

我是新编程人员,正在尝试使用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'

预先感谢

2 个答案:

答案 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()