【发布时间】:2014-06-15 20:05:46
【问题描述】:
我有一个文件压缩/解压缩系统,我首先检查文件是否被压缩,如果没有,我将这个文件压缩成一个 tar 存档 (tar.gz)。然后将压缩档案上传到服务器。上传后,服务器解压文件,并对该文件进行一些处理。
如果压缩服务在压缩文件期间关闭,则会出现问题。结果,tar 存档被损坏。
....
tar = tarfile.open(compress_file_name, "w:gz")
tar.add(file_path, arcname=file_name)
tar.close()
....
为了验证我尝试的文件的完整性
try:
f = tarfile.open(file_path) # This should throw CRC error but its not
except Exception, e:
raise e
但事实上 python 似乎可以很好地打开文件。为了验证文件是否真的没问题,我尝试打开文件tar -xvzf <corrupted_archive>,我得到了
[~/]$ tar -xvzf <corrupted_archive>
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
现在我可以使用subprocess.call(['tar','-xvzf',archive_name]) 在python 中使用相同的过程,但实际上我是一种验证文件完整性的pythonic 方法。
任何帮助将不胜感激。
【问题讨论】: