我正在尝试使用 Python 3.x 从给定的 URL 读取 csv 文件:
import pandas as pd import requests url = "https://github.com/cs109/2014_data/blob/master/countries.csv" s = requests.get(url).content c = pd.read_csv(s)
我有以下错误
“预期的文件路径名或类似文件的对象,得到 类型”
我怎样才能解决这个问题?我正在使用 Python 3.4
对于 较旧的 pandas 版本 ,或者 如果您需要身份验证 ,或者出于任何其他 HTTP 容错原因:
使用pandas.read_csv类似文件的对象作为第一个参数。
pandas.read_csv
如果要从字符串中读取 csv,可以使用io.StringIO.
io.StringIO
对于 URL https://github.com/cs109/2014_data/blob/master/countries.csv,您会得到 html 响应,而不是 原始 csv;您应该使用 github 页面中链接给出的 urlRaw来获取原始 csv 响应,即https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv
https://github.com/cs109/2014_data/blob/master/countries.csv
html
Raw
https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv
例子:
import pandas as pd import io import requests url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv" s=requests.get(url).content c=pd.read_csv(io.StringIO(s.decode('utf-8')))
笔记:
在 Python 2.x 中,字符串缓冲区对象是StringIO.StringIO
StringIO.StringIO