python - 如何使用 Python 检查文件是否存在于 tar 存档中?

标签 python tar tarfile

在将其作为类文件对象获取之前,我想使用 Python 验证 tar 存档中给定文件的存在。我用 isreg() 试过了,但可能我做错了什么。

如何使用 Python 检查文件是否存在于 tar 存档中?

我试过了

import tarfile


tar = tarfile.open("sample.tar", "w")
tar.add("test1.txt")
tar.add("test2.txt")
tar.add("test3.py")
tar.close()

tar = tarfile.open("sample.tar", "r")
tai = tar.tarinfo(name="test3.py")
print(tai.isreg())
print(tai.size())
tar.close()

可能 tai 是错误的。事实上 tai.size() 总是 0。

最佳答案

如果你真的需要检查,那么你可以使用 getnames 来测试成员资格。方法和 in 运算符:

>>> import tarfile
>>> tar = tarfile.open("sample.tar", "w")
>>> "sample.tar" in tar.getnames()
True

但是,我认为在 Python 中(以及一般处理文件系统),捕获异常是首选。最好尝试读取并捕获异常,因为在检查文件是否存在和稍后读取之间总是会发生事情。

>>> try:
...     tar.getmember('contents.txt')
... except KeyError:
...     pass
...

关于python - 如何使用 Python 检查文件是否存在于 tar 存档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180384/

相关文章:

使用 SSH 或 FTP 压缩远程目录的 Pythonic 方法

python - tensorflow : how to get a list of checkpoints

python - 从 python 代码生成 UML 行为模型的开源工具?

python - 将空目录添加到 tarfile

node.js - 如何在 node.js 中解压文件

c++ - 什么是 tar 解析器中的链接指示器(文件类型)

python - 如何获取 win32file 文件句柄中的当前读取位置?

python - PyQt5 - 传递的引用为 None

windows - 如何一步一步在windows中创建tar.gz文件?

python - 如何使用 Python 多处理池处理 tarfile?