2016-08-13 4 views
0

Я нашел похожие вопросы и попробовал предлагаемые решения, и никто, кажется, не решает мою проблему. То, что я пытаюсь сделать, это, по сути, копировать данные из одного файла в другой, и даже если это не вызывает ошибок, и я проверил, что переменная «строка» является строкой и содержит правильные данные, она просто не записывает файл. В настоящее время я использую python 2.7.python написать в файл не писать

Я попытался добавить .flush(), поскольку некоторые другие решения предложили без успеха. Я проверил, что если я пишу статическую строку перед первым циклом for, она фактически записывает файл. Я подозреваю, что это связано с тем, что оба файла открываются и повторяются через один из них, но я не уверен в действительности.

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

    raw_file.seek(0) # reset read pointer 
    for line in raw_file: 
     data_file.write(line) 

EDIT: Теперь я понимаю свои идиотизмы. У меня была вторая незавершенная функция, которая была в основном измененной копией, но без записи. «w +» метод открытия файла очищал его каждый раз, и поскольку эта вторая функция всегда вызывалась сразу после завершения этого блока кода, я никогда не мог поймать написанный файл. Приношу свои извинения за шум

+0

Имеется ли подкаталог 'data' в том же каталоге, что и ваш скрипт? – Soviut

+0

да, я также должен отметить, что это в настоящее время работает под окнами 10 – beeedy

+0

Вежливая вещь в этом случае (там, где на самом деле не осталось вопросов, потому что проблема была где-то совсем другая) заключается в том, чтобы удалить ваш вопрос - хотя в этом случае вам понадобится сотрудничество @ Soviut, так как пользователи с низким уровнем репутаций не могут самостоятельно удаляться, если присутствуют какие-либо поддерживаемые ответы. –

ответ

1

Вы можете просто записать файл данных в свой первый цикл.

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

     data_file.write(line) 
+0

Скопируйте ошибку макарон, серьезно извиниться, и она была исправлена! (на самом деле это не код) – beeedy

+0

@beeedy Я обновил свой ответ. – Soviut

+0

Отредактировано оригинальное сообщение, была полная ошибка с моей стороны, оставив незавершенный код в скрипте для запуска. – beeedy

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