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

如何在Python中读取压缩文件夹中的文本文件,python,python-2.7,zip,Python,Python 2.7,Zip,我有一个压缩的数据文件(都在一个文件夹中,然后压缩)。我想不解压缩地读取每个文件。我尝试了几种方法,但在zip文件中输入文件夹时没有任何效果。我应该如何做到这一点 zip文件中没有文件夹: with zipfile.ZipFile('data.zip') as z: for filename in z.namelist(): data = filename.readlines() 使用一个文件夹: with zipfile.ZipFile('data.zip') as z:

我有一个压缩的数据文件(都在一个文件夹中,然后压缩)。我想不解压缩地读取每个文件。我尝试了几种方法,但在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
递归返回存档中所有项的列表

您可以通过调用以下命令检查项目是否为目录:


希望有帮助。

我得到了亚历克的代码。我做了一些小的编辑:(注意,这对受密码保护的ZipFile不起作用)


我得到了RichS的密码。我做了一些小的修改:

导入操作系统
导入系统
进口拉链
archive=sys.argv[1]#假设使用`python my_script.py archive.zip启动`
zipfile.zipfile(存档)作为z:
对于z.namelist()中的文件名:
如果不是os.path.isdir(文件名):
#读文件
对于z.open中的行(文件名):
打印(行解码('utf-8'))
如您所见,编辑是次要的。我已经切换到Python3,ZipFile类有一个大写字母F,输出从b字符串转换为unicode字符串。仅当您试图解压缩文本文件时才进行解码

PS我一点也不反对富人。我只是觉得这会很搞笑。既有用又温和。 PPS您可以使用密码从存档中获取文件:
ZipFile.open(name,mode='r',pwd=None,*,force_zip64=False)
ZipFile.read(name,pwd=None)
。如果您使用
.read
,则没有上下文管理器,因此您只需执行以下操作即可

#读取文件
打印(z.read(文件名)。解码('utf-8'))
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
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)