如何用Python筛选CSV指定列并保存、提取SourceFile列文件名
Python实现exiftool CSV文件处理方案
前置依赖
如果选择pandas方案,需先安装pandas库,执行命令:pip install pandas
如果选择无额外依赖方案,无需安装任何第三方库。
方案1:pandas实现(适合大体积CSV,处理效率更高)
import pandas as pd import os # 替换为你的实际文件路径 input_csv_path = "你的原始exiftool生成的CSV文件路径.csv" output_csv_path = "处理后要保存的文件路径.csv" # 仅读取需要的3列,避免加载多余数据占用内存 df = pd.read_csv(input_csv_path, usecols=["SourceFile", "Description", "ObjectName"]) # 提取SourceFile列的纯文件名,自动适配Windows、macOS、Linux路径格式 df["SourceFile"] = df["SourceFile"].apply(os.path.basename) # 导出结果,index=False表示不输出pandas自动生成的行号,utf-8-sig编码兼容Excel打开不乱码 df.to_csv(output_csv_path, index=False, encoding="utf-8-sig")
方案2:标准库csv实现(无额外依赖,适合小体积CSV)
import csv import os # 替换为你的实际文件路径 input_path = "你的原始exiftool生成的CSV文件路径.csv" output_path = "处理后要保存的文件路径.csv" target_columns = ["SourceFile", "Description", "ObjectName"] with open(input_path, 'r', encoding='utf-8') as infile, \ open(output_path, 'w', newline='', encoding='utf-8-sig') as outfile: reader = csv.DictReader(infile) writer = csv.DictWriter(outfile, fieldnames=target_columns) # 写入表头 writer.writeheader() for row in reader: # 提取纯文件名 row["SourceFile"] = os.path.basename(row["SourceFile"]) # 仅保留指定列写入 writer.writerow({col: row[col] for col in target_columns})
内容的提问来源于stack exchange,提问作者chess1master
相关产品推荐
相关产品推荐

