如何批量重命名文件?

时间:2018-12-17 02:48:55

标签: python rename

我有数百个这种格式的文件,只有一个文件编号:

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 :(得分:2)

请注意,后面还有一个\n。在Windows上使用文件名是非法的。尝试lines = newnames.readlines().strip()

screenshot