Python内置open()函数无法打开GitHub raw CSV文件的解决方法
问题原因
- Python内置的
open()天生就只能读本地磁盘上存储的文件,根本没有内置发起HTTP/HTTPS请求读取网络资源的能力。你把GitHub的raw链接传给它时,它会把整串网址完全当成本地文件路径逐层查找,本地自然不存在对应路径的文件,触发[Errno 2] No such file or directory是必然结果。 pd.read_csv(url)能正常读取远程文件,是因为Pandas内部封装了网络请求、临时缓存逻辑,本质是它自动帮你把远程文件下载到了本地临时目录再做解析,不是open()本身支持直接读取网络链接。- 你写的URL本身也存在格式错误,路径中多了大量冗余的双斜杠,就算用支持网络请求的方法读取,这个错误链接也无法正常访问。
实现说明
如果严格限制「完全不使用任何网络请求能力、只单独调用
open()函数」,这个需求没有可行的实现方式。这是函数本身的功能定位决定的,和参数写法、编码配置没有任何关系,不存在特殊技巧能突破这个功能边界。
如果课程的实际要求是「不许使用Pandas这类第三方库,最终读取文件内容的操作必须通过open()完成」,可行的逻辑非常明确:先通过课程允许的内置能力把GitHub上的CSV文件下载到本地路径,再把本地文件路径传给open()读取即可。如果课程同时禁止使用urlopen,就替换成课程允许的其他内置网络请求方法完成下载步骤,永远绕不开「先把远程文件落地到本地,再用open()读本地文件」的流程,没有办法跳过下载步骤直接让open()读取跨网络的远程文件。
你代码中冗余斜杠修正后的正确raw地址如下:
correct_url = 'https://raw.githubusercontent.com/snowformatics/Bioinformatics/master/python_course092021/test_data/test.csv'
内容的提问来源于stack exchange,提问作者honeymoon
相关产品推荐
相关产品推荐

