2017-02-06 5 views
0
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() 

«os.listdir» функция возвращает следующий список, когда я распечатать его:Я пытаюсь удалить номера, которые находятся в названиях файлов, которые находятся в списке:

['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.

ошибки были отличены от «объекта списка не имеет атрибута» в «FileNotFoundError: [Errno 2] Нет такого файла или каталога», но я чувствую, что приближаюсь к решению этой проблемы.

что я делаю неправильно?

ответ

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)))) 
+0

Это сработало! Благодаря!! – KOOLz

Смежные вопросы