2013-11-28 1 views
0

Мне нужно переименовать около 2000 файлов, поскольку в настоящее время у них есть номер учетной записи каждого клиента в конце имени файла, но меня попросили изменить это к имени учетной записи.Переименование всех файлов в папке на основе имен файлов, которые у них уже есть

Я могу получить имя учетной записи без каких-либо проблем, отредактировав номер счета с конца имени файла и просмотрев его в электронной таблице Excel, чтобы найти имя учетной записи.

# open excel spreadsheet containing account names against numbers 

xl = Dispatch("Excel.Application") 
wb = xl.Workbooks.Add(r"C:\path\to\accountnumbers.xlsx") 
ws = wb.Worksheets(1) 
row = 1 
col = 1 
empty = False 

# get all the filenames of the files inside the sales pack folder 

while not empty: 
    val = ws.Cells(row,col).value 
    val2 = ws.Cells(row,col+1).value 
    for path, subdirs, files in os.walk(r"C:\path\to\Sales Packs"): 
     for filename in files: 
      accNo = filename[11:len(filename)-5] 
      if accNo == val: 
       accName = val2 
       os.rename(filename, filename[0:11]+accName+".xlsx") 
    row += 1 
    if val == None: 
     empty = True 

xl.Quit() 
pythoncom.CoUninitialize() 

Когда я запускаю это я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "C:/Users/Ryan/Documents/filenamechange.py", line 29, in <module> 
    os.rename(filename, filename[0:11]+accName+".xlsx") 
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'Sales_Pack_66 Books Ltd.xlsx' 

Кто-нибудь знает, где я неправильно?

EDIT:

Код работает сейчас.

# open excel spreadsheet containing account names against numbers 

xl = Dispatch("Excel.Application") 
wb = xl.Workbooks.Add(r"C:\path\to\accountnumbers.xlsx") 
ws = wb.Worksheets(1) 
row = 1 
col = 1 
empty = False 

# get all the filenames of the files inside the sales pack folder 

while not empty: 
    val = ws.Cells(row,col).value 
    val2 = ws.Cells(row,col+1).value 
    for path, subdirs, files in os.walk(r"C:\path\to\Sales Packs"): 
     for filename in files: 
      accNo = filename[11:len(filename)-5] 
      if accNo == val: 
       accName = val2 
       filename = os.path.join(path, filename) 
       os.rename(filename, path+r"\Sales Pack_"+accName+".xlsx") 
    row += 1 
    if val == None: 
     empty = True 

xl.Quit() 
pythoncom.CoUninitialize() 

ответ

1

Я думаю, вы должны использовать полный путь:

filename = os.path.join("C:\path\to\Sales Packs", filename) 
os.rename(filename, filename[0:11]+accName+".xlsx") 
+0

Или просто 'os.path.join (путь, имя файла)'. –

+0

Спасибо за ответ. Мне предоставлено то же сообщение об ошибке, за исключением пути, указанного перед именем файла. – ryansin

+0

Он попал в «C» в алфавите, но, кажется, удалил все файлы до этого – ryansin

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

  • Нет связанных вопросов^_^