Windows文件路径问题:无法通过Pandas打开Zip压缩CSV文件
解决Pandas读取Zip压缩CSV时的路径问题
问题重现
尝试用Pandas读取Zip压缩的CSV文件时遇到以下问题:
- 用
os.path.join生成路径,打印显示正常,但执行pd.read_csv时触发FileNotFoundError - 直接写带反斜杠的字符串路径时,部分字符被转义,仍无法打开文件
相关代码及输出:
import pandas as pd import os PATH = os.path.join('data', 'binance_data', 'data', 'spot', 'daily', 'klines', 'BTCUSD', '5m', '2023-01-01_2023-02-01', 'BTCUSDT-5m-2023-01-01') print(PATH)
打印输出:
data\binance_data\data\spot\daily\klines\BTCUSD\5m\2023-01-01_2023-02-01\BTCUSDT-5m-2023-01-01
执行读取代码:
dataset = pd.read_csv(PATH, compression='zip', header=None)
报错信息:
FileNotFoundError: [Errno 2] No such file or directory: 'data\\binance_data\\data\\spot\\daily\\klines\\BTCUSD\\5m\\2023-01-01_2023-02-01\\BTCUSDT-5m-2023-01-01'
核心解决方法
1. 补充Zip文件后缀
你生成的路径缺少.zip后缀,Pandas的compression='zip'参数要求目标文件必须是标准Zip格式,文件名需带.zip后缀。
修正代码:
PATH = os.path.join('data', 'binance_data', 'data', 'spot', 'daily', 'klines', 'BTCUSD', '5m', '2023-01-01_2023-02-01', 'BTCUSDT-5m-2023-01-01.zip') dataset = pd.read_csv(PATH, compression='zip', header=None)
2. 解决直接写路径的转义问题
Windows下直接写反斜杠路径会触发Python转义(比如\5m中的\5会被解析为八进制字符),两种解决方式:
- 使用原始字符串:在路径前加
r,示例:r'data\binance_data\...\BTCUSDT-5m-2023-01-01.zip' - 用正斜杠替代反斜杠:示例:
'data/binance_data/.../BTCUSDT-5m-2023-01-01.zip',Python会自动适配跨平台路径
3. 验证路径有效性
先确认路径是否真实存在,避免拼写或层级错误:
print(os.path.exists(PATH)) # 输出True表示路径有效,False则需检查文件夹/文件名拼写
另外注意检查是否有笔误,比如路径中的BTCUSD是否应为BTCUSDT?
4. 处理Zip包内多文件的情况
如果Zip压缩包内包含多个文件,需要指定包内的具体CSV文件名,格式为zip://文件路径.zip#包内文件名.csv:
dataset = pd.read_csv('zip://data/binance_data/.../BTCUSDT-5m-2023-01-01.zip#BTCUSDT-5m-2023-01-01.csv', header=None)
内容的提问来源于stack exchange,提问作者stochasticats
相关产品推荐
相关产品推荐

