2011-09-22 73 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