在python中写入for循环中的文件

时间:2017-03-23 14:09:06

标签: python for-loop file-writing

下面是我编写的脚本的一部分,它将列表中的每个项目传递给函数,将函数的输出存储为变量,最后使用换行符,然后将变量写入新的在文件中的行。它还将变量打印到控制台。

for i in lane_list:
        out = count_genes(count, i, reader, total_genes) + '\n'
        count += 1
        outfile.write(out)
        print out

脚本有效,但不符合我的预期。我可以看到输出在脚本运行时打印到控制台,所以我知道脚本在for循环中运行的速率,我认为python会以与打印输出到控制台相同的速率写入文件。奇怪的是,长时间没有任何东西会被写入文件(我可以通过在控制台中“控制”文件来看到这个,因为脚本正在运行),然后文件中会再出现几百行。这就好像python在一段时间内存储它要写入文件的内容,然后一次性写入所有内容。甚至更令人惊讶的是,当我捕获文件时,因为运行它的脚本将写入最后一行的一半但不是全部。

任何人都可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

正如@szymon所提到的,文件在写入时会被缓冲。如果您希望看到它被写入'直播,请使用open('/path/to/file'', 'w', 0) 0 means unbuffered

对于python3,使用1作为缓冲的行,因为只有二进制数据才允许缓冲。