我正在尋找使用tarfile
追加到.tar文件,但我不知道該文件是否在使用中。如何檢查文件是否可以附加到?如何檢查是否可以使用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()
列表中是否出現新文件。
一般來說,如果它甚至可能*在使用中,則不應該寫入任何文件。儘管append-mode對於像日誌那樣的簡單文件是安全的,其中沒有行高於緩衝區大小,tarfiles需要覆蓋最後幾個塊。 – o11c
@ o11c我不確定你的意思是「tarfiles需要覆蓋最後幾個塊」。 –
'.tar'文件由512字節記錄的(不可搜索的)序列組成。檔案的結尾至少有兩個連續的零填充記錄。爲了追加,您必須消除歸零記錄。 – o11c