如何在Python中读取压缩文件夹中的文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中读取压缩文件夹中的文本文件相关的知识,希望对你有一定的参考价值。

我有一个压缩数据文件(全部在文件夹中,然后压缩)。我想在不解压缩的情况下阅读每个文件。我尝试了几种方法,但没有任何方法可以输入zip文件中的文件夹。我该怎么做?

没有zip文件夹中的文件夹:

with zipfile.ZipFile('data.zip') as z:
  for filename in z.namelist():
     data = filename.readlines()

有一个文件夹:

with zipfile.ZipFile('data.zip') as z:
      for filename in z.namelist():
         if filename.endswith('/'):
             # Here is what I was stucked
答案

namelist()以递归方式返回存档中所有项目的列表。

您可以通过调用os.path.isdir()来检查项目是否是目录:

import os
import zipfile

with zipfile.ZipFile('archive.zip') as z:
    for filename in z.namelist():
        if not os.path.isdir(filename):
            # read the file
            with z.open(filename) as f:
                for line in f:
                    print line

希望有所帮助。

另一答案

我得到了Alec的代码。我做了一些小的编辑:(注意,这不适用于受密码保护的zipfiles)

import os
import sys
import zipfile

z = zipfile.ZipFile(sys.argv[1])  # Flexibility with regard to zipfile

for filename in z.namelist():
    if not os.path.isdir(filename):
        # read the file
        for line in z.open(filename):
            print line
        z.close()                # Close the file after opening it
del z                            # Cleanup (in case there's further work after this)

以上是关于如何在Python中读取压缩文件夹中的文本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何读取用 7z 压缩的文本文件?

java如何读取压缩包中的文本文件

在C++中如何读取文本中的数据存储为数组变量?

python 3 - 读取压缩存档中的文件将'b'字符放在每行的开头

如何在水壶中解压缩和导入 .tar.gz 文件?

HP-UX - 如何在不解压缩的情况下从 tar 存档中读取文本文件?