Python XLRDError:不支持的格式或损坏的文件:预期的BOF记录;找到b'\r\n\r\n<--';

Python XLRDError:不支持的格式或损坏的文件:预期的BOF记录;找到b'\r\n\r\n<--';,python,sharepoint,python-requests,Python,Sharepoint,Python Requests,我目前正在使用python来解释和添加存储在xlsx文件中的数据。我正在尝试将数据存储在SharePoint中,但无法使用该信息。当我运行下面的请求时,我得到输出[6]:,因此我知道它响应了请求 import requests import json from json import loads import pandas as pd from requests_negotiate_sspi import HttpNegotiateAuth headers={"User-Agent&q

我目前正在使用python来解释和添加存储在xlsx文件中的数据。我正在尝试将数据存储在SharePoint中,但无法使用该信息。当我运行下面的请求时,我得到
输出[6]:
,因此我知道它响应了请求

import requests
import json
from json import loads
import pandas as pd
from requests_negotiate_sspi import HttpNegotiateAuth
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
requests.get('OneDrive file address',auth=HttpNegotiateAuth(),headers=headers)
然而,我尝试了多种方法将这些数据放在熊猫数据框架中,每次都面临困难。当我尝试转换为JSON时,我会得到相同的错误:
JSONDecodeError:期望值:第3行第1列(char 4)
。我找到的大多数解决方案都是针对第1行第1列(char 0),对我的解决方案不起作用。这是我尝试转换的方法之一

import requests
import json
from json import loads
import pandas as pd
from requests_negotiate_sspi import HttpNegotiateAuth
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
tern=requests.get('One Drive Address',auth=HttpNegotiateAuth(),headers=headers)
tern_dict=tern.json()
db=pd.DataFrame.from_dict(tern_dict)
print(db)

我遇到的另一个主要错误是,当我试图直接将该文件视为excel文件时:
XLRDError:不支持的格式,或损坏的文件:预期的BOF记录;找到b'\r\n\r\n您可以将
tern.content
写入一个文件,然后在记事本或您喜爱的文本编辑器中打开该文件吗?我怀疑您得到的是HTML文件或XML文件。您可能需要将标题“Accept”指定为“application/json”。服务器可能用html或其他东西响应,如果使用json,这些东西将无法正常工作。@JustinEzequiel它是
“Content Type”
之后的部分,所以text/html?如果我使用“tern.content”,开头看起来像:
b'\r\n\r\n\r\n\r\n\r\n\r\n重定向\r\n\r\n
@biratenijas这会添加另一个名为“接受”的键吗?我使用了
headers={“用户代理”:“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/70.0.3538.77 Safari/537.36”,“接受”:“application/json”}
我仍然和以前有相同的错误。所以你从
get
调用中得到了一个HTML文件。试试@Piratenijas所说的,并在get呼叫中添加一个Accept头。如果这不起作用,您可以检查所述HTML文件,检查它是否有您需要的一个或多个表格。您是否可以将
tern.content
写入文件,然后在记事本或您喜爱的文本编辑器中打开该文件?我怀疑您得到的是HTML文件或XML文件。您可能需要将标题“Accept”指定为“application/json”。服务器可能用html或其他东西响应,如果使用json,这些东西将无法正常工作。@JustinEzequiel它是
“Content Type”
之后的部分,所以text/html?如果我使用“tern.content”,开头看起来像:
b'\r\n\r\n\r\n\r\n\r\n\r\n重定向\r\n\r\n
@biratenijas这会添加另一个名为“接受”的键吗?我使用了
headers={“用户代理”:“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/70.0.3538.77 Safari/537.36”,“接受”:“application/json”}
我仍然和以前有相同的错误。所以你从
get
调用中得到了一个HTML文件。试试@Piratenijas所说的,并在get呼叫中添加一个Accept头。如果这不起作用,您可以检查所述HTML文件,以检查它是否包含您需要的一个或多个表。
import requests
import json
from json import loads
import pandas as pd
from requests_negotiate_sspi import HttpNegotiateAuth
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
tern=requests.get('One Drive Address',auth=HttpNegotiateAuth(),headers=headers)
df=pd.read_excel(tern)