标准库中有一个工具可用于以下任务:
要迭代目录中的所有CSV文件,请使用^{} module:import glob
for csvfilename in glob.glob(r"C:\mydirectory\*.csv"):
#do_something
要解析CSV文件,请使用^{} module:
^{2}$
要解析日期并计算差异,请使用^{} module:from datetime import datetime
startdate = datetime.strptime("1999-10-20", "%Y-%m-%d")
enddate = datetime.strptime("2003-02-28", "%Y-%m-%d")
delta = enddate - startdate # difference in days
要将值添加到行的开头,请执行以下操作:row[0:0] = [str(delta)]
要将文件名附加到行的末尾,请执行以下操作:row.append(csvfilename)
以及将行写入新的CSV文件:with open(csvfilename, "wb") as csvfile:
writer = csv.writer(csvfile, delimiter=",")
writer.writerow(row)
综合起来,你得到:import glob
import csv
from datetime import datetime
with open("combined_files_csv", "wb") as outfile:
writer = csv.writer(outfile, delimiter=",")
for csvfilename in glob.glob(r"C:\mydirectory\*.csv"):
with open(csvfilename, "rb") as infile:
reader = csv.reader(infile, delimiter=",")
for row in reader:
startdate = datetime.strptime(row[3], "%Y-%m-%d")
enddate = datetime.strptime(row[2], "%Y-%m-%d")
delta = enddate - startdate # difference in days
row[0:0] = [str(delta)]
row.append(csvfilename)
writer.writerow(row)