如何使用Python读取公共远程服务器上的文件且无需下载?
解决方案
open()函数仅支持读取本地文件系统路径,无法直接解析HTTP协议的URL,因此会抛出文件不存在的错误。你可以采用以下几种方案直接读取线上TSV文件内容,所有方案均将内容加载到内存,不会写入本地磁盘:
方案1:使用pandas直接读取(数据处理场景首选)
如果你的场景需要处理结构化TSV数据,pandas原生支持从URL加载文件,代码最简洁:
import pandas as pd tsv_url = "http://afakesite.org/myfile.tsv" # sep指定为制表符,和读取本地TSV的参数完全一致 df = pd.read_csv(tsv_url, sep="\t", encoding="utf-8")
colab等常用在线运行环境默认已安装pandas,无需额外安装依赖。
方案2:使用requests库读取(通用场景)
如果只需要逐行读取原始文本内容,用requests发送HTTP请求即可:
import requests tsv_url = "http://afakesite.org/myfile.tsv" response = requests.get(tsv_url) # 校验请求是否成功 response.raise_for_status() # 直接获取解码后的文本内容 tsv_text = response.text # 逐行处理示例 for line in tsv_text.splitlines(): row = line.split("\t") # 后续自定义处理逻辑
如果站点有反爬限制,可在请求中添加User-Agent模拟浏览器访问:
response = requests.get(tsv_url, headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" })
方案3:使用Python标准库urllib(无需安装第三方依赖)
如果运行环境不允许安装第三方库,可以用内置的urllib实现:
from urllib.request import urlopen tsv_url = "http://afakesite.org/myfile.tsv" with urlopen(tsv_url) as f: tsv_text = f.read().decode("utf-8") # 后续处理逻辑和方案2一致
内容的提问来源于stack exchange,提问作者Trag0
相关产品推荐
相关产品推荐

