从 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 脚本),这样我就可以手动查看然后执行它。