当前位置: 首页 > 知识库问答 >
问题:

如何在用Python 3解包之前检查一个tar文件是否不为空?

尹昀
2023-03-14

我想解压一些tar档案,但我只想rpcess非空的。我找到了一些gzip档案的代码如何在Python中检查空gzip文件,还有这个:

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存档,无论是空的还是非空的,似乎都至少有一个thsi字符。因此,即使它们是空的,它们都通过了测试。

我还能如何检查呢?

共有2个答案

应和悦
2023-03-14

好的,我找到了一种使用tarfile模块中的getmembers()方法的方法。我使用这个方法检查非空的tar文件:

 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}")

齐琦
2023-03-14

您可以使用薄文件模块列出塔文件的内容:

https://docs.python.org/3/library/tarfile.html#command-line-options

您可能只使用 tarfile.open 并检查描述符是否包含任何内容。

import tarfile

x = tarfile.open("the_file.tar")
x.list()
 类似资料:
  • 我想向文件输入一些内容,但我想首先检查是否存在具有我想要创建的名称的文件。如果是这样,我不想创建任何文件,即使文件是空的。 我的尝试 有什么办法可以做我想做的事吗?

  • 问题内容: 我正在尝试使小程序以非常频繁的时间间隔(每秒几次)读取本地文件系统(用户计算机)上的文件,然后通过javascript将文件的内容提供给网页。 小程序需要读取的文件由用户计算机上的程序进行高频更新。我担心的是,如果小程序在文件正在更新的过程中从文件中读取数据,可能会发生什么。 我不知道这有多大可能,但是如果确实有问题,有没有办法在读取文件之前确保当前未将其写入文件? 问题答案: 我对此

  • 我有一个项目,关于从URL获取XML文件,将其删除,提取数据,然后进行处理。此外,我正在使用用户输入创建URL。但是我需要检查URL是否包含要刮取的XML文件。有什么办法吗?那么基本上如何检查URL是否包含XML文件呢?

  • 本文向大家介绍如何检查一个对象是否为空,包括了如何检查一个对象是否为空的使用技巧和注意事项,需要的朋友参考一下 检查一个数组为空很容易,直接调用 length 方法即可,那么如何检查一个对象是否为空呢 ❓ 这里的空指的是对象没有自有属性 假设这里有两个对象,一个是 obj 一个是 anotherObj 想了半天查看对象是否有 Symbol 属性只能使用 getOwnPropertySymbols

  • rank ▲ ✰ vote url 4 1266 285 929 url 用Python如何一个文件是否存在? 不用try:语句可以一个文件存在 如果不确定文件存不存在,可以这样做: import os.path os.path.isfile(fname)

  • 问题内容: 我到处都在寻找这个答案,但是找不到。 我正在尝试提出一个脚本,该脚本将搜索特定的子文件夹,然后检查其是否包含任何文件,如果有,则写出文件夹的路径。我已经弄清楚了子文件夹搜索部分,但是对文件的检查让我很困惑。 我发现了关于如何检查文件夹是否为空的多种建议,并且尝试修改脚本以检查文件夹是否为空,但是我没有得到正确的结果。 这是最接近的脚本: 这将列出所有空的子文件夹,但是如果我尝试将其更改