Как пакетно переименовать файлы? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть сотни файлов в этой форме, только с номером документа:

28OPV-000333.000-A-001_00.pdf 
28OPV-000333.000-A-002_00.pdf 

Я хочу добавить описание для всех них.Я подготовил все новые имена в TXT.Как я могу переименовать их, используя Python?

Желаемый вывод:

28OPV-000333.000-A-001_equipment list.pdf
28OPV-000333.000-A-002_master tag.pdf 

import os
path = "D:\\TEST\\"
newnames = open("d:\\newnames.txt")
lines = newnames.readlines()
for file in os.listdir(path):
    for line in lines:
        if line[0:22]==file[0:22]:
            os.renames(path+file,path+line)
        else:
            break

Я новичок в программировании, мой код выше выдает ошибку какниже я не могу найти, где проблема.

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'D:\\TEST\\28OPV-000333.000-B-555_0000.PDF' -> 'D:\\TEST\\28OPV-000333.000-B-555_HAHA.PDF\n'

Process finished with exit code 1

Наконец, с поведением друзей ниже, я получаю желаемый результат.и я поместил исправленные коды ниже для дальнейшего использования.

import os,sys
path = "D:\\2 BA\\3 TP TQ Vendor drawings\\siemens\\"
newnames = open("d:\\newnames.txt")
lines = newnames.read().splitlines()
for file in os.listdir(path):
    for line in lines:
        if line[0:22]==file[0:22]:
            try:
                os.renames(path+file,path+line)
            except Exception:
                pass

или ниже

import os
path = "D:\\TEST\\"
newnames = open("d:\\newnames.txt")
lines = newnames.readlines()
for file in os.listdir(path):
    for line in lines:
        if line[0:22]==file[0:22]:
            try:
                os.renames(path+file,path+line.strip())
            except Exception:
                pass

1 Ответ

0 голосов
/ 18 декабря 2018

Обратите внимание, что есть один \n позади.Это недопустимо для имени файла в Windows. Попробуйте lines = newnames.readlines().strip().

screenshot

...