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

我写了一个脚本,点击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)
    ...
点赞