【问题标题】:How to convert 'io.BufferedWriter' to 'Dataframe' - Python如何将 'io.BufferedWriter' 转换为 'Dataframe' - Python
【发布时间】:2020-07-06 07:01:30
【问题描述】:

我正在使用以下代码从 One Drive 下载文件:


if response.status_code == 200:
    print('\n> Response Success')

    with open('Book2.xlsx', 'wb') as File:
        File.write(response.content)
        
        print('\n> File Downloaded')
else:
    print('\n> Failed:', response.status_code)
    print(response.content)

代码来自:This post here

“文件”来自 One Drive,使用以下代码:


import sys, os, time, requests
import pandas as pd
import urllib.parse

OneDrive_FilePath = 'Book2.xlsx'

OneDrive_FileURL = 'https://graph.microsoft.com/v1.0/me/drive/root:/' + OneDrive_FilePath + ':/content'
OneDrive_FileURL = urllib.parse.quote(OneDrive_FileURL, safe=':/')
print(OneDrive_FileURL)

Client_Id = 'XXXX'
Tenant_Id = 'YYYYY'
Refresh_Token_First = 'ZZZZZ'

PostStr = {'grant_type': 'refresh_token', 'client_id': Client_Id, 'refresh_token': Refresh_Token_First}

Token_Response = requests.post('https://login.microsoftonline.com/' + Tenant_Id + '/oauth2/v2.0/token', data=PostStr)

Access_Token = Token_Response.json()['access_token']
New_Refresh_Token = Token_Response.json()['refresh_token']

if Access_Token is None or New_Refresh_Token is None:
    print('\n> Failed: Access_Token NOT Retrieved')
    sys.exit()

Response = requests.get(OneDrive_FileURL, headers={'Authorization': 'Bearer ' + Access_Token})

正在下载的“文件”是“io.BufferedWriter”的形式。我想将“文件”实际加载为数据框,以便我可以对其进行某些操作并将其上传到 AWS。

我该怎么做,请帮忙。

谢谢

【问题讨论】:

  • 能否请您提供一个包含此类文件的 URL,以便您进行试验?
  • 另外,请包含实际创建“文件”的代码。
  • @Roy2012 - 我编辑了帖子并添加了用于从一个驱动器访问“文件”的代码。希望这会有所帮助,这是我用于下载“文件”的唯一代码。
  • 我没有访问令牌,所以我无法运行您的代码。如果我理解正确,“文件”只是您想读入数据框的 Excel 文件?这就是问题所在吗?
  • @Roy2012 - 是的,它是 One Drive 中的一个 Excel 文件,但是当以现在的访问方式访问文件时,它会更改为一种类型 - “io.BufferedWriter”。我想将其更改为数据框或首先将其读取为数据框。谢谢

标签: python python-3.x dataframe bufferedwriter


【解决方案1】:

正如 cmets 中所解释的,File 的类型大多无关紧要。您需要做的就是直接从响应中读取 excel,如下所示:

url = "https://go.microsoft.com/fwlink/?LinkID=521962"
res = requests.get(url)
pd.read_excel(res.content)

最后一条语句生成一个常规的 pandas 数据框。你可以随心所欲地使用它。

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 2019-06-24
    • 2018-01-23
    • 2022-01-23
    • 2021-03-01
    • 1970-01-01
    • 2022-12-18
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多