Python 3.4 ...我正在尝试将CSV中的特定列从字符串转换为datetime并将其写入文件。我能够读取和转换它,但需要帮助将日期格式更改写入文件(最后一行代码 - 需要修改)。最后一行代码出错时出现以下错误:序列预期。
import csv
import datetime
with open ('/path/test.date.conversion.csv') as csvfile:
readablefile = csv.reader(csvfile)
writablefile = csv.writer(csvfile)
for row in readablefile:
date_format = datetime.datetime.strptime(row[13], '%m/%d/%Y')
writablefile.writerow(date_format)
答案 0 :(得分:3)
所以date_format是datetime类的一个实例。您需要格式化字符串以打印到文件。你可以使用标准:
date_format.isoformat()
或自定义您自己的格式:
date_format.strftime('%Y-%m-%d %H:%M:%S')
还有几点需要注意。您无法写入您正在阅读的同一文件。如果要覆盖该文件,请创建一个tmp文件,然后在完成后将其替换,但最好只创建另一个文件。最好的解决方案就是充分利用stdin和stdout:
import csv
import sys
from datetime import datetime
FIELD = 13
FMT = '%m/%d/%Y'
readablefile = csv.reader(sys.stdin)
writablefile = csv.writer(sys.stdout)
for row in readablefile:
dt = datetime.strptime(row[FIELD], FMT)
row[FIELD] = dt.isoformat()
writablefile.writerow(row)
现在您可以这样调用脚本:
cat /path/test.date.conversion.csv | python fixdate.py > another_file.csv
此时,您可以使用argparse模块为脚本提供各种好的参数,如: