2016-12-12 12 views
0

私は新しい文字列を追加できるように、空の文字列をtgzファイルに追加します。Pythonでtgzファイルの最後に空文字列を追加するには

cat orginal.tgz <(echo ''| gzip)> modified.tgz 

$sha256sum *.tgz 
3b49d79af670d0aea9d1e0ead2f512ad107d54b657df6ecb60a1b13ef796cb66 modified.tgz 
574ddb9b269bc2e69fffff81c2f29d932d3fd95e4c9ca1ed259517ac83b1421a orginal.tgz 

modified.tgzファイルを問題なく展開できます。今、私は同じことをするために、この単純なpythonプログラムを書いた。あなたは空の文字列にして、ファイルを追加しているLinuxのコマンドの中でやっている

$ sha256sum *.tgz 
3b49d79af670d0aea9d1e0ead2f512ad107d54b657df6ecb60a1b13ef796cb66 modified.tgz 
574ddb9b269bc2e69fffff81c2f29d932d3fd95e4c9ca1ed259517ac83b1421a orginal.tgz 
0458bb8342faf0482739069a1a70aef89d32fb9336f2f7926dfe6d54a0dc6cc1 new.tgz 



$ tar -xvf new.tgz 
google.txt 
gzip: stdin: unexpected end of file 
tar: Child returned status 1 
tar: Error is not recoverable: exiting now 

答えて

1

with open("new.tgz", "w") as outfile: 
    with open("orginal.tgz", "r") as infile: 
     buff = infile.read() 
     outfile.write(buff) 
     outfile.write(' ') 

私はnew.tgzファイルに対して異なるsha256sumを見ることができますが、以下のエラーでuntarするために失敗していますtgz。あなたがPythonでやっていることは、tgzファイル自体を変更することです。

tgzを直接更新することはできません。ファイルを追加する必要があります。 tarなどのライブラリを使用して、空の文字列を含むファイルを作成し、それをファイルに追加します:

archive = tarfile.open("original.tgz", "w|gz") 
archive.add(empty_file_path, arcname=empty_file_path) 
archive.close() 
関連する問題