作家只写一行

时间:2016-05-18 07:49:01

标签: python csv pycharm

为什么我的编写器代码在for循环中只将1行写入csv文件。我的代码是:

for row in announcements_df:

    row['Date'] = datetime.datetime.strptime(row['Date'] + row['Time'], '%Y%m%d%H:%M:%S')
    data_writer = csv.DictWriter(open('announcements_date_formated.csv', 'wb'), fieldnames=['asxCode', 'CompanyName', 'Date', 'Time', 'Header', 'page', 'MarketSensitive', 'hour', 'minutes', 'year', 'month', 'day', 'Date2'])
    data_writer.writeheader()
    data_writer.writerow(row)

非常感谢

2 个答案:

答案 0 :(得分:2)

因为对于每一行,您重新打开文件进行写入,因此您将覆盖以前的内容。将open()的行移到循环外部。还有标题部分。

答案 1 :(得分:1)

您的代码应如下所示:

with open('announcements_date_formated.csv', 'wb') as csvfile:
    data_writer = csv.DictWriter(csvfile, fieldnames=['asxCode', 'CompanyName', 'Date', 'Time', 'Header', 'page', 'MarketSensitive', 'hour', 'minutes', 'year', 'month', 'day', 'Date2'])
    data_writer.writeheader()

    for row in announcements_df:
        row['Date'] = datetime.datetime.strptime(row['Date'] + row['Time'], '%Y%m%d%H:%M:%S')
        data_writer.writerow(row)

正如JulienD已提到的那样,每次循环时,您都会重新打开文件