我有一个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()
元组。