使用Python从Box下载文件
我正在尝试使用Python将Excel文件从Box下载到本地驱动器 使用boxsdk,我能够通过OAuth2进行身份验证,并成功地在Box上获取文件id 但是,当我使用使用Python从Box下载文件,python,excel,download,box,Python,Excel,Download,Box,我正在尝试使用Python将Excel文件从Box下载到本地驱动器 使用boxsdk,我能够通过OAuth2进行身份验证,并成功地在Box上获取文件id 但是,当我使用client.file(file\u id).content()函数时,它只返回一个字符串,如果我使用client.file(file\u id).get()函数,它只会给我一个boxsdk.object.file.file 有人知道如何在本地计算机上将这两个文件写入Excel文件吗?或者使用Python从Box下载excel文件
client.file(file\u id).content()函数时,它只返回一个字符串,如果我使用client.file(file\u id).get()
函数,它只会给我一个boxsdk.object.file.file
有人知道如何在本地计算机上将这两个文件写入Excel文件吗?或者使用Python从Box下载excel文件的更好方法
(我发现boxsdk.object.file.file
有一个选项download\u to(writeable\u stream
,但我不知道如何使用它来创建Excel文件,我的搜索也没有什么帮助)。你可以使用python,同时使用方言='Excel'标志。它非常适合将数据导出到Microsoft Excel。
主要思想是在循环中使用csv.writer来编写每一行。尝试一下,如果你不能,请在这里发布代码。可以找到下载到的文档和源代码,这是正确的。我从自己那里了解到了这一点。你只需要执行以下操作
path = 'anyFileName.xlsx'
with open(path, 'wb') as f:
client.file(file_id).download_to(f)
这是我用来从框中读取excel文件的内容,您可以检查内容字符类型,并在解码时使用它
from boxsdk import JWTAuth
from boxsdk import Client
import io
import pandas as pd
import chardet # for checking char type
# Configure JWT auth object
sdk = JWTAuth.from_settings_file('config/box_config.json')
# Get auth client
client = Client(sdk)
s = client.file(file.id).content()
print(chardet.detect(open(s, 'rb').read())['encoding']) # gives char type
outputDF = pd.read_excel(io.StringIO(s.decode('utf-8')))
您已经完成了大部分工作。剩下的工作应该比您已经完成的工作更简单。如果我正在正确地阅读Box文档,您只需要以二进制模式打开一个新的可写文件,并使用该文件(Python文件对象,而不是文件名)作为下载到()
的参数。请查看Python的打开()
内置函数。感谢John Y,它成功了!我使用了open()函数,参数为“wb”(用于模式)和1(用于缓冲区)。只要我已经在本地驱动器中创建了一个空白excel文件,它就会将下载的数据写入excel工作表(包括将其拆分为不同的选项卡).Excel在尝试手动打开Excel文件时并不高兴,但只要我先使用close()函数,就可以使用pandas在Python中将Excel选项卡作为数据帧打开。再次感谢!