如何在Python中读取压缩文件夹中的文本文件
我有一个压缩的数据文件(都在一个文件夹中,然后压缩)。我想不解压缩地读取每个文件。我尝试了几种方法,但在zip文件中输入文件夹时没有任何效果。我应该如何做到这一点 zip文件中没有文件夹:如何在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:
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)