附加文件时缺少行

Sas*_*sha 2 python file-io

我是stackoverflow和python的新手,所以这看起来很明显:

在此过程中,我想从前一过程生成的文件列表中创建一个名为database的新文件.列表中的文件非常大(大约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)
Run Code Online (Sandbox Code Playgroud)

如果我:

file_join(a_file_list)
Run Code Online (Sandbox Code Playgroud)

我得到了数据库文件,但缺少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
Run Code Online (Sandbox Code Playgroud)

我试图找出是否有内存限制......否则我没有想法.

Gre*_*ill 5

我将使用我的通灵调试技巧,并猜测你没有database.close().

如果在写入文件时没有关闭文件,Python输出缓冲区中可能仍有数据尚未写入操作系统.如果您的程序在此时退出,则数据不会写入磁盘,最后您将丢失数据.

  • 我可能会建议将来使用[上下文管理器](http://docs.python.org/library/stdtypes.html#context-manager-types)来防止出现同样的问题.`用open(path,'a')作为f:f.write(line)`. (2认同)