我试图删除列表中的文件名称中的数字:

时间:2017-02-06 22:09:16

标签: python python-3.5

import os
from string import digits


def rename_files():
    #1 - get the file names from the folder
    f=os.listdir("/home/happy/Desktop/testfile")
    print(f)
    #2 - remove numbers from each file name
    x = 0
    while (x<len(f)): 
        b = print(os.rename(f[x], f[x].translate(str.maketrans('','',digits))))
        print(b)
        x=x+1

rename_files()

&#39; os.listdir&#39;当我打印出来时,函数返回以下列表:

['64seattle.jpg', '2chennai.jpg', '55kiev.jpg', '45ithaca.jpg', '54dallas.jpg', '68pune.jpg', '16los angeles.jpg', '46colombo.jpg', '96karachi.jpg', '36sydney.jpg', '47sao paulo.jpg', '93manchester.jpg', '83gainesville.jpg', '35miami.jpg', '29buenos aires.jpg', '72bucharest.jpg', '66san jose.jpg', '69shanghai.jpg', '73delhi.jpg', '47london.jpg', '52new york.jpg', '45austin.jpg', '2hyderabad.jpg', '47singapore.jpg', '61edinbrugh.jpg', '4istanbul.jpg', '29bristol.jpg', '.DS_Store', '17cairo.jpg', '69chicago.jpg', '41seoul.jpg', '88jacksonville.jpg', '22rochester.jpg', '90beijing.jpg', '28houston.jpg', '89berkeley.jpg', '25madrid.jpg', '97oakland.jpg', '9barcelona.jpg', '72bangalore.jpg', '50san diego.jpg', '5bogota.jpg', '74tel aviv.jpg', '48sunnyvale.jpg', '37athens.jpg']

我尝试了几种不同的方式,但由于我是一个菜鸟,而且对此很陌生,我很难搞清楚这一点。十,我试图将其传递给循环试图删除数字。我使用的是python 3.5 btw。

错误与&#34;区别对象没有属性&#34; to&#34; FileNotFoundError:[Errno 2]没有这样的文件或目录&#34; ,但我觉得我越来越接近解决这个问题了。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

rename仅适用于完整文件路径,否则无法找到文件。使用os.path.join()在两个参数中将完整的有效路径传递给rename

my_dir = "/home/happy/Desktop/testfile"
for f in os.listdir(my_dir):    
    os.rename(os.path.join(my_dir,f), os.path.join(my_dir,f.translate(str.maketrans('','',digits))))