Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从Box下载文件_Python_Excel_Download_Box - Fatal编程技术网

使用Python从Box下载文件

使用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文件

我正在尝试使用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文件的更好方法

(我发现
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选项卡作为数据帧打开。再次感谢!