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

时间:2019-06-26 14:31:25

标签: python bitcoin

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

脚本开头:

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

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

我的问题是:

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

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

我正在保存6013个块中的数据。哪种方法可以最大程度地减少破坏.txt文件中写入的数据的风​​险?

3 个答案:

答案 0 :(得分:0)

我认为保持文件打开效率会更高,因为python不需要在每次您想读写文件时都搜索并打开文件。

我猜应该看起来像这样

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

答案 1 :(得分:0)

运行一个基准测试,自己看看这种问题的典型答案。

尽管如此,打开和关闭文件确实要花钱。 Python需要为与文件关联的缓冲区和数据结构分配内存,并调用某些操作系统功能,例如open系统调用,该系统调用将依次搜索缓存或磁盘中的文件。

另一方面,程序,用户,整个系统等可以同时打开的文件数量受到限制。例如,在Linux上,$.getJSON("https://sheets.googleapis.com/v4/spreadsheets/" + SpreadsheetID + "/values/Color1!A2:Q?key=<MY_API_KEY>", function(data) { // data.values contains the array of rows from the spreadsheet. Each row is also an array of cell values. $(data.values).each(function() { var location = {}; location.title = this[2]; location.latitude = parseFloat(this[10]); location.longitude = parseFloat(this[9]); location.institution = this[3]; //location.hidden = <?>; locations.push(location); }); 中的值表示内核将分配的最大文件句柄数。当您收到许多有关文件句柄用尽的错误消息时,您可能想增加此限制(source)。 如果您的程序在这样的限制性环境中运行,那么最好仅在需要时才打开文件。

答案 2 :(得分:0)

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