在长时间运行的Python脚本中编写每个项目到文件?



我有一个Python脚本,用于搜索硬盘驱动器上的每个图像,获取其大小,一些元数据和哈希值。单个文件的最终结果是一个元组,例如:

file_tuple = (fullpath ; filename ; filesize ; some_meta ; hash)

我想把所有的元组放在一个单独的file_list中,最后放在一个文件中。

我的脚本适用于小文件夹,但如果我在整个驱动器上运行它,无论发生什么(内存错误,OSError,永远运行,需要重新启动内核等),所有的"工作"丢了。

所以我希望能够在任何文件完成这个过程后立即保存结果。如果脚本由于某种原因而中断,我可以简单地从上次失败的地方恢复。

我想到的解决方案是将循环放入伪代码中:

  • 打开文件
  • 写1行
  • 关闭文件

:

with open('Files.txt', 'w') as f:
f.write(file_tuple + 'n')

这是一个很好的解决方案,还是我错过了一些更大的概念?

真正的程序可能会使用某种形式的数据库进行这种存储,例如sqlite,但是如果普通文件适合您,那也很好。注意:

  • 您需要以'a'(追加)模式打开文件,否则每次打开都会根除先前的内容
  • file_tuple + 'n'可能不会工作,因为元组不是字符串;你需要f.write(f"{file_tuple}n")之类的东西。

打开和关闭文件可能会很慢,但这取决于操作系统和您的程序所做的其他事情-您应该测量它。如果它太慢,那么您可能希望只打开文件一次,并且只write()元组。

相关内容

  • 没有找到相关文章

最新更新