繁体   English   中英

如何用python编写和更新.txt文件?

[英]How to write and update .txt files with python?

我编写了一个脚本来获取比特币数据并将其保存在 .txt 文件中,或者在 .txt 文件存在的情况下,它会更新它们。 .txt 文件是连接 neo4j 节点的节点和关系。

在脚本的开头:

  1. 它检查文件是否存在,因此它打开它们并附加新行或
  2. 如果文件不存在,脚本会创建它们并开始附加行。

.txt 文件不断打开,脚本写入新数据。 .txt 文件在写入所有数据或我终止执行时关闭。

我的问题是:

我应该为每次迭代和每个 .txt 文件打开、写入、关闭每个 .txt 文件吗?

或者

我应该保持现在的样子吗? 打开 .txt 文件,进行所有写入,写入完成后关闭 .txt 文件

我正在保存 6013 个块的数据。 哪种方式可以最大限度地降低损坏 .txt 文件中写入的数据的风​​险?

保持文件打开会更快。 在您提到的评论中,“以前写入的数据丢失不是一种选择”。 打开文件损坏文件的可能性更高,因此每次迭代打开和关闭文件更可靠。 还有一个选项可以将数据保留在某个缓冲区中,并在接收到所有数据时或在用户/系统中断或网络超时时将缓冲区写入/附加到文件。

我认为保持文件打开会更有效,因为每次要读/写文件时,python 都不需要搜索文件并打开它。

我想它应该是这样的

with open(filename, "a") as file:
    while True:
        data = # get data
        file.write(data)

运行一个基准测试并亲自看看此类问题的典型答案。

然而,打开和关闭文件确实有成本。 Python 需要为与文件关联的缓冲区和数据结构分配内存,并调用一些操作系统函数,例如open系统调用,它反过来会在缓存或磁盘上搜索文件。

另一方面,程序、用户、整个系统等可以同时打开的文件数量是有限制的。 例如在 Linux 上, /proc/sys/fs/file-max表示内核将分配的最大文件句柄数。 当您收到大量有关耗尽文件句柄的错误消息时,您可能希望增加此限制 ( source )。 如果您的程序在如此受限的环境中运行,那么最好仅在需要时保持文件打开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM