如何检查是否可以使用tarfile模块写入tar文件?

时间:2016-07-12 18:03:32

标签: python tar tarfile

我希望使用tarfile附加到.tar文件,但我不知道该文件是否正在使用中。如何检查文件是否可以附加到?

我试过了:

try:
   with tarfile.open("foo.tar", "a:") as tar:
      tar.add("bar.txt")
except tarfile.TarError:
   print "error"

这有时会出错,但有时却没有,最后的tar文件没有我期望的所有文件。

我的计划是让它循环并继续尝试直到它工作。

我有其他选择,其中大多数涉及将皮重留给另一个进程但我觉得tarfile应该对这类事负责。我可以为tarfile编写一个包装器来检查新文件是否出现在tar.getmembers()列表中。

1 个答案:

答案 0 :(得分:2)

唯一安全的方法是:

  • 制作文件的副本。
  • 以追加模式打开副本
  • 将副本重命名为原件。