如何在使用 Python 3 解压之前检查 tar 文件是否为空?
How to check if a tar file is not empty before unpacking it with Python 3?
我想解压缩一些 tar 档案,但我只想处理非空档案。我找到了一些 gzip
档案 How to check empty gzip file in Python 的代码,还有这个:
async def is_nonempty_tar_file(self, tarfile):
with open(tarfile, "rb") as f:
try:
file_content = f.read(1)
return len(file_content) > 1
except Exception as exc:
self.logger.error(
f"Reading tarfile failed for {tarfile}", exc_info=True
)
所有 tar 档案,无论是空的还是非空的,似乎都至少有这个字符 \x1f
。所以即使是空的也都通过了测试
我还能如何检查?
您可以使用 tarfile
模块列出 tarfile 的内容:
https://docs.python.org/3/library/tarfile.html#command-line-options
您可能可以只使用 tarfile.open
并检查描述符是否包含任何内容。
import tarfile
x = tarfile.open("the_file.tar")
x.list()
好的,我找到了一种使用 tarfile
模块中的 getmembers()
方法的方法。我做了这个检查非空 tarfiles 的方法:
def is_nonempty_tar_file(self, archive):
with tarfile.open(archive, "r") as tar:
try:
file_content = tar.getmembers()
return len(file_content) > 0
except Exception as exc:
print(f"Reading tarfile failed for {archive}")
我想解压缩一些 tar 档案,但我只想处理非空档案。我找到了一些 gzip
档案 How to check empty gzip file in Python 的代码,还有这个:
async def is_nonempty_tar_file(self, tarfile):
with open(tarfile, "rb") as f:
try:
file_content = f.read(1)
return len(file_content) > 1
except Exception as exc:
self.logger.error(
f"Reading tarfile failed for {tarfile}", exc_info=True
)
所有 tar 档案,无论是空的还是非空的,似乎都至少有这个字符 \x1f
。所以即使是空的也都通过了测试
我还能如何检查?
您可以使用 tarfile
模块列出 tarfile 的内容:
https://docs.python.org/3/library/tarfile.html#command-line-options
您可能可以只使用 tarfile.open
并检查描述符是否包含任何内容。
import tarfile
x = tarfile.open("the_file.tar")
x.list()
好的,我找到了一种使用 tarfile
模块中的 getmembers()
方法的方法。我做了这个检查非空 tarfiles 的方法:
def is_nonempty_tar_file(self, archive):
with tarfile.open(archive, "r") as tar:
try:
file_content = tar.getmembers()
return len(file_content) > 0
except Exception as exc:
print(f"Reading tarfile failed for {archive}")