Мне нужно переименовать около 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()
Или просто 'os.path.join (путь, имя файла)'. –
Спасибо за ответ. Мне предоставлено то же сообщение об ошибке, за исключением пути, указанного перед именем файла. – ryansin
Он попал в «C» в алфавите, но, кажется, удалил все файлы до этого – ryansin