2016-04-15 204 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 >>> –