我正在研究如何写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保存一次数据) 是否可以逐行保存?
感谢您的建议,他们总是帮助改进
答案 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。