Python:建议如何改进在Python中编写流式文本文件

时间:2013-01-04 14:20:58

标签: python performance optimization coding-style

我正在研究如何写streaming strings as files in python

通常我使用表达式

myfile = open("test.txt", w)
for line in mydata:
...     myfile.write(line + '\n')
myfile.close()

Python在目录中创建一个文本文件,并按时间间隔保存chunk-by-chunk的值。

我有以下问题:

是否可以设置缓冲区? (例如:每20 MB保存一次数据) 是否可以逐行保存?

感谢您的建议,他们总是帮助改进

1 个答案:

答案 0 :(得分:13)

python中的文件I / O已经缓冲。 open() function允许您确定缓冲写入的范围:

  

可选的 buffering 参数指定文件所需的缓冲区大小:0表示无缓冲,1表示行缓冲,任何其他正值表示使用缓冲区(大约)那个大小。负 buffering 表示使用系统默认值,通常为tty设备进行行缓冲,并为其他文件进行完全缓冲。如果省略,则使用系统默认值。

就个人而言,我会通过with语句将该文件用作上下文管理器。只要with套件下的所有语句(至少有一个缩进级别)完成,就会引发异常,文件对象将被关闭:

with open("test.txt", 'w', buffering=20*(1024**2)) as myfile:
    for line in mydata:
        myfile.write(line + '\n')

我在上面的示例中将缓冲区设置为20 MB。