在 python 脚本中读取 tar 文件内容而不解压它
我有一个 tar 文件,其中包含许多文件。 我需要编写一个 python 脚本,它将读取文件的内容并给出总字符数,包括字母总数、空格、换行符等所有内容,而无需解压 tar 文件。
I have a tar file which has number of files within it.
I need to write a python script which will read the contents of the files and gives the count o total characters, including total number of letters, spaces, newline characters, everything, without untarring the tar file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用
getmembers()
之后,您可以使用
extractfile()
将成员提取为文件对象。仅举一个例子对于上面示例中的文件对象
f
,您可以使用read()
、readlines()
等。you can use
getmembers()
After that, you can use
extractfile()
to extract the members as file object. Just an exampleWith the file object
f
in the above example, you can useread()
,readlines()
etc.您需要使用 tarfile 模块。具体来说,您使用 TarFile 类的实例来访问文件,然后使用 TarFile.getnames() 访问名称。
如果您想读取内容,则可以使用此方法
you need to use the tarfile module. Specifically, you use an instance of the class TarFile to access the file, and then access the names with TarFile.getnames()
If instead you want to read the content, then you use this method
之前,这篇文章展示了一个“dict(zip(()”) 将成员名称和成员列表放在一起的示例,这很愚蠢,会导致过度读取存档,为了实现相同的目的,我们可以使用字典理解:
更多信息关于如何使用 tarfile
提取 tarfile 成员
索引 tar 文件
索引、读取、动态额外
包含重复成员的 tar 文件 tarfile
在我们有一个奇怪创建的 tar 的情况下,在本例中通过附加同一文件的多个版本对于同一个 tar 存档,我们可以仔细处理它,我已经注释了哪些成员包含哪些文本,假设我们想要第四个(索引 3)成员,“capturetheflag\n”
或者我们可以迭代 tar 文件
#!/usr/bin/env python3
Previously, this post showed an example of "dict(zip(()"'ing the member names and members lists together, this is silly and causes excessive reads of the archive, to accomplish the same, we can use dictionary comprehension:
More info on how to use tarfile
Extract a tarfile member
Index a tar file
Index, read, dynamic extra a tar file
tarfile with duplicate members
in the case that we have a tar that was created strangely, in this example by appending many versions of the same file to the same tar archive, we can work with that carefully, I've annotated which members contain what text, lets say we want the fourth (index 3) member, "capturetheflag\n"
Alternatively we can iterate over the tar file
#!/usr/bin/env python3
你可以使用 tarfile.list()
ex :
获取这些数据后。您可以操纵此输出或将其写入文件并执行您的任何要求。
you can use tarfile.list()
ex :
after getting these data. you can manipulate or write this output to file and do whatever your requirement.
您可以使用
getnames()
下面是您可以使用的代码示例:
You can use
getnames()
Below is an example of a code that you can use: