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

Gia*_*ear 7 python optimization performance coding-style

我正在研究如何在python中将流式字符串为文件.

通常我使用表达式

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

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

我有以下问题:

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

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

Mar*_*ers 14

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

可选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')
Run Code Online (Sandbox Code Playgroud)

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