繁体   English   中英

如何在Python中将空字符串添加到tgz文件的末尾

[英]How to add empty string to the end of tgz file in Python

我正在运行以下命令,将空字符串添加到tgz文件中,以便可以有新的sha256 sum;

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

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

我可以解压缩Modifyed.tgz文件,没有任何问题; 现在,我编写了这个简单的python程序来执行相同的操作。

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,但是无法解压缩并出现以下错误

 $ 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

在linux命令中,您正在向tgz添加一个带有空字符串的文件。 您在python中所做的就是修改tgz文件本身。

您不能直接更新tgz。 您需要向其中添加文件。 使用像tar这样的库,并创建一个带有空字符串的文件并将其添加到其中:

archive = tarfile.open("original.tgz", "w|gz")
archive.add(empty_file_path, arcname=empty_file_path)
archive.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM