2011-09-22 71 views
2

我是新來的兩個計算器和Python,所以這可能看起來很明顯:失蹤線,而追加文件

在這個過程中,我想創建一個名爲數據庫的新文件了由前面的過程中生成的文件列表。列表中的文件相當大(大約13.6 MB)。我們的目標是讓所有其他與行單個文件:

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 

我試圖找出是否有內存限制......否則,我沒有想法。

+0

當你完成它時,你是否關閉了你的文件? –

+0

你能顯示你所有的相關代碼嗎? – garnertb

+0

你沒事,我沒有關閉文件。關閉的概念對我來說是新的。感謝大家的快速響應。 – Sasha

回答

5

我打算使用我的心理調試技巧,並猜測你沒有database.close()

如果在寫入文件時沒有關閉文件,Python輸出緩衝區中可能還有數據尚未寫入操作系統。如果你的程序在那個時候退出,那麼這些數據就不會寫入磁盤,並且在最後你將會丟失數據。

+2

我可能會建議將來使用[上下文管理器](http://docs.python.org/library/stdtypes.html#context-manager-types)來防止出現相同的問題。 '打開(路徑,'a')爲f:f.write(line)'。 – TorelTwiddler