使用请求和pandas获取远程excel文件的标头

我有一个函数,使用pandas和请求,将.CSV文件拉入pandas数据帧并返回标头 . 效果很好,即

import pandas as pd
import requests

def getcsvheader(file):
    print('Getting file...')
    res = requests.get(file)
    df = pd.read_csv(io.StringIO(res.text))
    return(df.columns.tolist())

我想对excel文件做同样的事情,但我不确定上面的第四行 . 如果我只是将read_csv更改为read_excel,我会收到如下错误:

TypeError: unsupported operand type(s) for <<: 'str' and 'int'

显然因为excel文件不能读作文本,所以(io.StringIO(res.text))需要用某些东西替换,但是用什么?

或者还有另一种方法来实现这一目标吗? (任何库的组合都可以) .

回答(1)

3 years ago

pandas可以使用URL和excel本地 . 如果你只需要一个URL的 Headers 行,这应该可以让你:

import pandas

URL="https://example.com/test.xlsx"

def get_excel_headers_from_url(URL)
    return pandas.read_excel(URL).columns.tolist()