10

我正在研究如何在 python 中将流字符串作为文件写入。

通常我使用一个表达式作为

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

Python 在目录中创建一个文本文件,并每隔一段时间逐块保存值。

我有以下问题:

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

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

4

1 回答 1

18

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')

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

于 2013-01-04T14:28:17.380 回答