2015-08-22 63 views
0

Python 3.4 ...我試圖將CSV中的特定列從字符串轉換爲datetime並將其寫入文件。我能夠讀取並轉換它,但需要幫助將日期格式更改寫入文件(最後一行代碼 - 需要修改)。對於最後一行代碼,我得到以下錯誤錯誤:預期的順序。將CSV字段的格式從字符串轉換爲日期時間

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) 

回答

2

所以date_format是datetime類的一個實例。您需要格式化一個字符串以打印輸出到文件。你可以用標準去:

date_format.isoformat() 

或自定義自己的格式:

date_format.strftime('%Y-%m-%d %H:%M:%S') 

另外一對夫婦更多的事情要注意。你不能寫入你正在閱讀的文件。如果要覆蓋該文件,請創建一個tmp文件,然後在完成時替換它,但最好創建另一個文件。最好的解決方案恕我直言,是讓這樣的良好的使用標準輸入和標準輸出:

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的模塊爲您的腳本提供各種不錯的參數,如:

  • 要格式化哪個字段?
  • 什麼輸入和/或輸出格式?
相關問題