如何无需下载直接解析URL中的json.gz格式文件并转DataFrame
实现方案
你需要先安装requests库用于发送网络请求,安装命令:pip install requests
核心逻辑为通过requests的流式请求获取远程gz文件的二进制流,直接交给gzip模块逐行解压解析,全程不会在本地生成缓存文件,内存占用和你原有的本地读取逻辑一致。
完整可运行代码
import requests import gzip import pandas as pd def parse_from_url(url, max_rows=50000): # 开启流式请求,避免大文件一次性加载占满内存 resp = requests.get(url, stream=True, timeout=30) # 直接将响应的原始二进制流传给gzip解压 with gzip.open(resp.raw, 'rb') as g: for i, line in enumerate(g): if i >= max_rows: break yield eval(line) def getDF_from_url(url, max_rows=50000): df_dict = {} for idx, data in enumerate(parse_from_url(url, max_rows)): df_dict[idx] = data return pd.DataFrame.from_dict(df_dict, orient='index') # 调用示例,直接填目标URL即可 target_url = "http://snap.stanford.edu/data/amazon/productGraph/categoryFiles/reviews_Clothing_Shoes_and_Jewelry_5.json.gz" clothsrevi = getDF_from_url(target_url, max_rows=50000)
注意事项
- 代码保留了原逻辑的最多读取50000行的限制,可通过调整
max_rows参数自定义读取行数 - 流式请求模式不会一次性加载整个大文件到内存,避免内存溢出
- 网络环境较差时可适当增大
timeout参数的数值,避免请求超时
内容的提问来源于stack exchange,提问作者nilesh varpe
相关产品推荐
相关产品推荐

