2016-04-15 109 views
0

我正在尋求將我的Export01.csv的第一列格式化爲dd/mm/yyyy。不幸的是當我輸出它時,目前的格式是dd/mm/yy mm:mm。通過Python導出CSV格式的標題和日期格式

如果可能的話,有人可以幫我調整我的代碼,以便在導入過程中對日期進行更改嗎?

import sys 
import cx_Oracle 
import csv 

connection = cx_Oracle.connect('user','password','ORPM2') 
cursor = connection.cursor() 


SQL="SELECT * FROM EXPORT01" 
cursor.execute(SQL) 

filename="C:\Projects\SQL_Export\Export01.csv" 

with open(filename,"wb") as fout: 
writer = csv.writer(fout) 
writer.writerow([ i[0] for i in cursor.description ]) # heading row 
writer.writerows(cursor.fetchall()) 

fout.close() 
cursor.close() 
connection.close() 

如果處理使用fetchall排在同一時間我已經添加數據的前兩列的樣品中Export01

WEEK_ENDING   ORDER_HEADLINE 
12/02/2016 00:00 Headline 
15/01/2016 00:00 Headline 
15/01/2016 00:00 Headline 
+0

當您使用「with」contextManager時,您不需要關閉文件'fout',而且,您還需要尊重縮進級別。 – YOBA

回答

1

,然後你可以轉換第一列條目如下:

from datetime import datetime 
import sys 
import cx_Oracle 
import csv 


connection = cx_Oracle.connect('user','password', 'ORPM2') 
cursor = connection.cursor() 
SQL="SELECT * FROM EXPORT01" 
cursor.execute(SQL) 
filename = r"C:\Projects\SQL_Export\Export01.csv" 

with open(filename, "wb") as fout: 
    writer = csv.writer(fout) 
    writer.writerow([i[0] for i in cursor.description ]) # heading row 

    for row in cursor.fetchall(): 
     cols = list(row) 
     cols[0] = cols[0].strftime("%d/%m/%Y") 
     writer.writerow(cols) 

cursor.close() 
connection.close() 

另外請注意,您使用的,當你離開它的範圍就會自動關閉文件的with聲明。我還建議你在r前加上你的文件路徑,以避免Python試圖逃離路徑中的任何反斜槓。

+0

我收到以下錯誤Martin ........ Traceback(最近調用最後一次): 文件「C:/Users/803261400/desktop/Export2.py」,第25行,在 row [0] = datetime.strptime(row [0],「%d /%m /%y%H:%M」)strftime(「%d /%m /%Y」) AttributeError:'module'對象沒有屬性'strptime' –

+0

對不起,忘了複製一個導入,你需要添加'from datetime import datetime' –

+0

Martin,謝謝你的幫助。我得到了同樣的錯誤........ Traceback(最近呼叫最後): 文件「C:/Users/803261400/desktop/Export2.py」,第23行,在 row [0] = datetime.strptime(行[0],「%d /%m /%y%H:%M」)strftime(「%d /%m /%Y」) TypeError:必須是字符串,而不是日期時間。 datetime >>> –