python - 如何在python中下载zip文件并从中解析csv文件

标签 python python-3.x

我写了一个脚本,它点击一个 URL 并下载一个 zip 文件,解压它。现在我在解析解压后得到的 CSV 文件时遇到问题。

import csv
from requests import get
from io import BytesIO
from zipfile import ZipFile

request = get('https://example.com/some_file.zip')
zip_file = ZipFile(BytesIO(request.content))
files = zip_file.namelist()
with open(files[0], 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
        print(row)

最佳答案

当您执行 files = zip_file.namelist() 时,您只是列出了 zip 存档中的文件名;这些文件尚未从 zip 中提取,您不能像您正在做的那样将它们作为 本地 文件打开

您可以使用 ZipFile.open 直接从 zip 文件中读取数据流.

所以这应该可行:

zip_file = ZipFile(BytesIO(request.content))
files = zip_file.namelist()
with zip_file.open(files[0], 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    ...

关于python - 如何在python中下载zip文件并从中解析csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49515617/

相关文章:

python - 如何在没有身份验证的情况下直接向 SMTP 服务器发送邮件?

python - 向 PyQt5 QGroupBox 中的按钮添加功能

python - Python 3.4 中的 BeautifulSoup 语法无效(2to3.py 之后)

python - 用多个元素替换列表中的元素

python - 无法创建 PMMLPipeline

python-3.x - `new_root.mainloop()` 不会使主窗口无响应

python - 如何允许同时进行更多套接字连接?

python - 如何预先确定numpy数组运算的结果类型?

url_for 中的 Python flask 数组查询字符串

python - Python 上的不清楚索引错误