python - Python Zip 文件读取
问题描述
我是 python 新手,我有一个 .zip 文件,它有多个子文件夹,每个子文件夹都有多个 .txt 文件。我正在尝试读取所有 .txt 文件但我想将特定文件夹存储到变量中但我无法这样做。
例如:“test.zip”,其中包含三个文件夹“a”,“b”,“c”,每个文件夹都有多个(>10,000)个 .txt 文件我想读取文件夹“a”中的所有文件并将其存储到变量 a_file 与文件夹“b”和“c”相同我尝试了以下代码:
for file in os.listdir():
if file.endswith('test.zip'):
zfile=zipfile.ZipFile(file)
fnames= [f.filename for f in zfile.infolist()]
for subfile in fnames:
if fnames == "a" . #name of a folder
if subfile.endswith('.txt'):
lines=zfile.open(subfile).read()
print(lines)
但是代码正在从多个文件夹中提取所有文件并且不显示任何输出可能是因为 if 条件 它。而不是特定的阅读文件夹并将其存储在此先感谢您的帮助
解决方案
发生这种情况是因为 zip 文件列出的文件如下:
a/a1.txt a/a2.txt b/b1.txt b/b2.txt
所以你需要使用 split('/') 将文件与目录分开
你可以试试这个:
import os
from zipfile import ZipFile
for file in os.listdir():
if file.endswith('test.zip'):
zfile = ZipFile(file);
fnames = [f.filename for f in zfile.filelist];
for subfile in fnames:
dir_name = subfile.split('/')[0];
if(dir_name == 'a'):
if(subfile.endswith('.txt')):
lines = zfile.open(subfile).read();
print(lines);
推荐阅读
- python - 如何在 sympy 中复制此 Wolfram Solve 示例
- javascript - 如何独立设置每个 React 路由的样式?
- swift - 获取数据后函数不调用
- vue.js - 我可以使用 Vue 路由器链接到 div 而不是页面吗?
- python - 如何在图形标签中包含平方符号
- c# - 网页上的 Google 登录,在 ASP.NET 后端验证的令牌,没有使用客户端密码?
- javascript - 无法创建远程会话 - Eclipse - Appium
- react-native - react-native-firebase/admob rewardedAd.load() 第二次不工作
- web - Stack Overflow 配置文件中“标题”的用途是什么?
- swift - Swift 开发 pod