我有数百个这种格式的文件,只有一个文件编号:
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
答案 0 :(得分:2)
请注意,后面还有一个\n
。在Windows上使用文件名是非法的。尝试lines = newnames.readlines().strip()
。