пропущенные строки при добавлении файлов - PullRequest
2 голосов
/ 22 сентября 2011

Я новичок и в stackoverflow, и в python, поэтому это может показаться очевидным:

В этой процедуре я хочу создать новый файл с именем database из списка файлов, созданных предыдущей процедурой.Файлы в списке довольно большие (около 13,6 МБ).Цель состоит в том, чтобы иметь один файл со строками из всех остальных:

database = open('current_database', 'a')

def file_apender(new):
    for line in new:
        database.write(line)

def file_join(list_of_files):
    for file in list_of_files:
        file_apender(file)

Тогда, если я:

file_join(a_file_list)

, я получаю файл базы данных, но 26 строк отсутствуют, а последняяодин не завершен.Вот окончание файла:

63052300774565. 12 4 3 0 0.37 0.79 10.89 12.00 1.21 25.26 0.00 0.00 0.00 0.00
63052300774565. 12 2 0 0 0.06 0.12 2.04 2.21 0.86 5.30 0.00 0.00 0.00 0.00
63052300774565. 12 0 0 0 0.12 0.26 3.13 4.63 3.81 11.95 0.00 0.00 0.00 0.00
63052300774565. 12 2 2 0 0.06 0.15 1.35 2.39 0.00 3.94 0.00 0.00 0.00 0.00
63052300774565. 12 0 1 0 0.06 0.08 1.13 1.29 3.60 6.16 0.00 0.00 0.00 0.00
63052300774565. 12 2 0 0 0.23 0.41 4.02 6.47 8.39 19.52 0.00 0.00 0.00 0.00
63052300774565. 12 1 3 0 0.05 0.16 1.85 2.50 0.57 5.13 0

Я попытался выяснить, есть ли ограничение памяти ... В противном случае у меня нет идей.

1 Ответ

5 голосов
/ 22 сентября 2011

Я собираюсь использовать свои навыки психической отладки и думаю, что у вас нет database.close().

Если вы не закрываете файл при записи в него, в буферах вывода Python могут остаться данные, которые еще не были записаны в ОС. Если ваша программа завершает работу в этот момент, тогда данные не будут записаны на диск, и в конце будут отсутствовать данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...