从 LookUp 文件重命名文件名
Renaming file names from LookUp file
我正在尝试重命名目录中的文件。目录下的文件有PDF、JPG、PNG等,文件名都包含EmployeeNum_DocumentType
。示例:
001234_Employee_Form.pdf
009876_Drivers_License.jpg
查找文件 (Lookup.csv
) 包含员工信息,如员工编号(无前导零)、工作 ID、名字、姓氏等...
我想做的是重命名目录中的所有文件。我想将文件名中的员工编号替换为工作 ID + 名字 + 姓氏 + 文档类型。所以我之前例子中的文件名应该是这样的:
ZMC3A76AK_Joe_Bob_Employee_Form.pdf
DYCXDVBY4_Bob_Smith_Drivers_License.jpg
对于我不完整的脚本,我深表歉意,但这是我昨天一整天所做的 Google' 中目前所能想到的。我不知道如何用 LookUp.csv
文件中的数据替换文件名的员工编号。 *print(rowDict[0], rowDict[1], rowDict[4])
* 正在工作并从 LookUp.csv
文件打印。
import csv
import os
import shutil
# make an empty dictionary which will hold the keys
keys = {}
#open file
with open('LookUp.csv','r') as csvfile:
reader = csv.reader(csvfile, delimiter = ',', quotechar='"')
# build a dictionary with the associated ids
for rowDict in reader:
keys[ rowDict[0] ] = rowDict[1]
#print(rowDict)
print(rowDict[0], rowDict[1], rowDict[4])
假设 CSV 文件的列确实是员工 ID、工作 ID、名字、姓氏,这应该符合您的要求:
import csv
import os
keys = {}
with open('LookUp.csv','r') as csvfile:
reader = csv.reader(csvfile, delimiter = ',', quotechar='"')
next(reader) # skip header
for row in reader:
keys[ int(row[0]) ] = '_'.join( row[1:4] )
for name in os.listdir('.'):
eid = int(name[:6])
newname = keys[eid] + name[6:]
print( "Rename", name, newname )
os.rename( name, newname )
我将员工编号转换为整数以避免前导零问题。您可能需要检查员工编号是否在列表 (if eid not in keys:
) 中以避免出现异常,尤其是当您必须在部分 运行 之后重做此操作时。您可能希望第一次注释掉 os.rename
调用,只是为了确保它执行您想要的操作。有时我会用这样的脚本创建一个批处理文件(或 shell 脚本),这样我就可以手动查看然后执行它。
我正在尝试重命名目录中的文件。目录下的文件有PDF、JPG、PNG等,文件名都包含EmployeeNum_DocumentType
。示例:
001234_Employee_Form.pdf
009876_Drivers_License.jpg
查找文件 (Lookup.csv
) 包含员工信息,如员工编号(无前导零)、工作 ID、名字、姓氏等...
我想做的是重命名目录中的所有文件。我想将文件名中的员工编号替换为工作 ID + 名字 + 姓氏 + 文档类型。所以我之前例子中的文件名应该是这样的:
ZMC3A76AK_Joe_Bob_Employee_Form.pdf
DYCXDVBY4_Bob_Smith_Drivers_License.jpg
对于我不完整的脚本,我深表歉意,但这是我昨天一整天所做的 Google' 中目前所能想到的。我不知道如何用 LookUp.csv
文件中的数据替换文件名的员工编号。 *print(rowDict[0], rowDict[1], rowDict[4])
* 正在工作并从 LookUp.csv
文件打印。
import csv
import os
import shutil
# make an empty dictionary which will hold the keys
keys = {}
#open file
with open('LookUp.csv','r') as csvfile:
reader = csv.reader(csvfile, delimiter = ',', quotechar='"')
# build a dictionary with the associated ids
for rowDict in reader:
keys[ rowDict[0] ] = rowDict[1]
#print(rowDict)
print(rowDict[0], rowDict[1], rowDict[4])
假设 CSV 文件的列确实是员工 ID、工作 ID、名字、姓氏,这应该符合您的要求:
import csv
import os
keys = {}
with open('LookUp.csv','r') as csvfile:
reader = csv.reader(csvfile, delimiter = ',', quotechar='"')
next(reader) # skip header
for row in reader:
keys[ int(row[0]) ] = '_'.join( row[1:4] )
for name in os.listdir('.'):
eid = int(name[:6])
newname = keys[eid] + name[6:]
print( "Rename", name, newname )
os.rename( name, newname )
我将员工编号转换为整数以避免前导零问题。您可能需要检查员工编号是否在列表 (if eid not in keys:
) 中以避免出现异常,尤其是当您必须在部分 运行 之后重做此操作时。您可能希望第一次注释掉 os.rename
调用,只是为了确保它执行您想要的操作。有时我会用这样的脚本创建一个批处理文件(或 shell 脚本),这样我就可以手动查看然后执行它。