2016-12-07 3 views
-1

В данном сценарии записывается следующим образом:Python: Запись в файл -> пустого файл

result = open("c:/filename.csv", "w") 
result.write("\nTC-"+str(TC_index)) 

.csv-файл заполняются данными в то время (1) петля. Запуск сценария в Eclipse и выход, нажав кнопку остановки. К сожалению, большую часть времени, когда я открываю файл, он полностью пуст.

Есть ли способ исправить это?

+2

Пожалуйста, быть немного более конкретно в вашем вопросе. А также дайте весь код того, как вы обрабатываете файлы, и если вы делаете что-нибудь еще. –

+0

Не могли бы вы предоставить больше своего кода? –

+0

вам нужно закрыть дескриптор файла, иначе никто из ваших записей не будет гарантирован –

ответ

1

Чтобы обеспечить содержание промывается и записывается в файл без необходимости закрыть дескриптор файла:

import os 
# ... 

result.write("\nTC-"+str(TC_index)) 
result.flush() 
os.fsync(result) 

Но, конечно, если вы разорвать петлю вручную, нет никакой гарантии, вы не нарушите его между записью и флешем, тем самым не получив последнюю строку. Я не знаком с кнопкой остановки Eclipse, но, возможно, он прекращает выполнение, вызывая исключение KeyboardInterrupt. Если это так, вы всегда можете поймать это и явно закрыть файл. А еще лучше, использовать with заявление, которое будет вызывать, чтобы это произошло автоматически:

with open("c:/filename.csv", "w") as result: 
    for TC_index in range(100): # or whatever loop 
     result.write("\nTC-"+str(TC_index)) 
     # flush & fsync here if still necessary (but might not be) 
Смежные вопросы