You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3从URL下载Zip文件、列文件及读取CSV的实现方法

使用Python3处理远程Zip文件:下载、列文件、读取CSV内容

没问题,我来一步步帮你实现这个需求——从远程下载Zip文件、列出里面的所有文件,再读取其中的CSV内容,用Python 3就能轻松搞定~

先准备好依赖

  • 首先需要安装requests库用来下载文件,执行这个命令就行:
    pip install requests
    
  • 剩下的zipfile、csv都是Python自带的标准库,不用额外安装。如果想用更便捷的数据分析工具,后面也会提到Pandas的用法。

完整代码实现(标准库版)

这个版本不需要额外装数据分析库,用Python原生工具就能完成所有操作,而且可以直接在内存中处理Zip文件,不用写入本地磁盘:

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

# 把这里替换成你的Zip文件实际URL
ZIP_URL = "https://example.com/your-target.zip"

def process_remote_zip():
    try:
        # 1. 下载Zip文件到内存中
        response = requests.get(ZIP_URL)
        response.raise_for_status()  # 如果请求失败(比如404、500),直接抛出异常提示
        
        # 2. 解析Zip文件内容
        with ZipFile(BytesIO(response.content)) as zip_ref:
            # 打印压缩包内所有文件的名称
            print("压缩包内的文件列表:")
            for file_name in zip_ref.namelist():
                print(f"- {file_name}")
            
            # 3. 遍历并读取所有CSV文件
            print("\n开始读取CSV文件内容:")
            for file_name in zip_ref.namelist():
                # 筛选出后缀为.csv的文件(忽略大小写)
                if file_name.lower().endswith(".csv"):
                    print(f"\n=== 当前读取文件: {file_name} ===")
                    # 打开Zip里的CSV文件
                    with zip_ref.open(file_name) as csv_file:
                        # 把二进制流解码成UTF-8字符串,再用csv阅读器解析
                        csv_reader = csv.reader((line.decode('utf-8') for line in csv_file))
                        # 逐行读取并打印(你可以根据需求改成存入列表、数据库等操作)
                        for row in csv_reader:
                            print(row)
                            
    except requests.exceptions.RequestException as e:
        print(f"下载Zip文件时出错了: {e}")
    except Exception as e:
        print(f"处理文件时遇到问题: {e}")

if __name__ == "__main__":
    process_remote_zip()

代码逐段解释

  • 下载到内存:用requests.get获取文件的二进制内容,再通过BytesIO转换成类文件对象,这样不用把Zip文件存到本地,既省空间又高效。
  • 列出所有文件:zip_ref.namelist()会返回压缩包内所有文件的完整路径,直接遍历打印就能看到所有内容。
  • 读取CSV:遍历文件列表时,通过后缀筛选出CSV文件,用zip_ref.open()直接打开压缩包里的文件,再用csv.reader解析——注意要把二进制流解码成字符串,不然会报错。

可选:用Pandas读取CSV(更适合数据分析)

如果你的CSV文件比较大,或者需要做数据清洗、分析,用Pandas会更省心,代码也更简洁:

首先安装Pandas:

pip install pandas

然后修改读取CSV的部分(前面的下载和列文件逻辑不变):

import pandas as pd

# ... 前面的下载、列文件代码保持不变 ...

            # 用Pandas读取CSV的版本
            print("\n用Pandas读取CSV文件:")
            for file_name in zip_ref.namelist():
                if file_name.lower().endswith(".csv"):
                    print(f"\n=== 读取文件: {file_name} ===")
                    # 直接从Zip文件中读取CSV到DataFrame
                    df = pd.read_csv(zip_ref.open(file_name))
                    # 打印前5行预览,你可以在这里做任何数据处理
                    print(df.head())

一些注意事项

  • 如果Zip文件特别大,内存不够用,建议先下载到本地磁盘再处理,把内存处理的代码改成这样:
    # 先下载到本地
    with open("local_archive.zip", "wb") as f:
        f.write(response.content)
    # 再打开本地的Zip文件
    with ZipFile("local_archive.zip") as zip_ref:
        # 后续操作和之前一样
    
  • 编码问题:如果你的CSV文件不是UTF-8编码(比如GBK),需要在解码时指定编码,比如把line.decode('utf-8')改成line.decode('gbk'),或者在Pandas里加encoding='gbk'参数。

内容的提问来源于stack exchange,提问作者Mina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:25:20