2016-05-18 4 views
-1

Как мой код writerow в цикле for записывает только 1 строку в файл csv. Мои коды:writow только написать одну строку

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) 

Большое спасибо

+0

Пожалуйста отступа код. Это важно в Питоне. –

ответ

2

Потому что для каждой строки вы вновь открыть файл для записи, так что вы перезаписать предыдущее содержимое. Переместите линию с open() вне цикла. И заголовок тоже.

+0

Спасибо, это работает – duckman

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 уже упоминалось, вы открываете файл снова и снова, каждый раз, когда вы цикл

+0

спасибо, я последовал за @JulienD, и это сработало – duckman

Смежные вопросы