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

Python如何直接通过URL读取远程文件无需下载到本地

报错原因

Python内置open()函数的设计目标仅为访问本地文件系统资源,不支持HTTP/HTTPS等网络协议的URL传入,直接传入远程链接会触发Invalid argument错误。

可行实现方案

不需要提前把文件下载到本地磁盘落盘,直接在内存中完成网络请求、内容解析即可,以下是两种常用实现:

方案1:标准库实现(无第三方依赖)

通过Python自带的urllib.request.urlopen可直接获取远程文件的类文件流,全程在内存中处理,不会生成本地文件,可直接对接内置csv模块做结构化解析:

import csv
from urllib.request import urlopen

url = 'https://cdn.wsform.com/wp-content/uploads/2021/05/currency.csv'

# 读取全部文本内容
with urlopen(url, timeout=10) as resp:
    # urlopen默认返回字节流,按文件对应编码解码即可
    file_content = resp.read().decode('utf-8')
    print(file_content)

# 逐行解析CSV格式内容
with urlopen(url, timeout=10) as resp:
    csv_reader = csv.reader(line.decode('utf-8') for line in resp)
    for row in csv_reader:
        # 按需处理每一行CSV数据
        print(row)

如果日常习惯使用requests库做网络请求,也可以通过requests.get(url, timeout=10).text直接拿到文件文本内容,处理逻辑和上述urllib方案一致。

方案2:数据处理场景用Pandas直接读取

如果是做数据分析类场景,pandas的read_csv方法原生支持传入URL,内部会自动完成网络请求、编码识别和格式解析,代码更简洁:

import pandas as pd

url = 'https://cdn.wsform.com/wp-content/uploads/2021/05/currency.csv'
# 直接读取为结构化DataFrame
df = pd.read_csv(url)
# 打印前5行验证读取结果
print(df.head())
注意事项
  • 上述方案的所有处理流程都在内存中完成,不会在本地磁盘生成实体文件,满足无需提前下载的需求
  • 如果目标URL存在鉴权、反爬限制,可以通过自定义请求头、Cookie、代理参数适配,urllib.request支持构造自定义Request对象传入相关配置
  • 生产环境使用建议增加异常捕获,处理请求超时、链接失效、权限不足等网络类错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:39:19