python上传文件到onedrive_如何使用msgraph-sdk-python将文件上传到onedrive?

当谈到

python(也不是专业人士)时,我不是新手,但这是我第一次尝试这样的事情.

我想使用python脚本将文件上传到OneDrive.听起来很简单吧?很明显,我可以处理的更多.

我想使用的新SDK是Microsoft Graph的一个?但是github(https://github.com/MicrosoftArchive/msgraph-sdk-python)并没有真正提到如何设置新的Oauth2身份验证,获取令牌并在python中使用客户端.身份验证部分中提到的链接对我不起作用,我收到如下错误消息:“AADSTS900144:请求正文必须包含以下参数:’client_id’.”

我在stackoverflow上查找了类似的问题,但大多数都是关于旧的onedrive-sdk,最近的一个我能找到的差不多有3个月了.对此的回应是它仍在开发中.

我想我遇到的问题都与Microsoft Graph仍在开发中有关,但我想知道是否有人设法让它工作,如果他们能指出我正确的方向来获得身份验证设置并获得我开始将文件上传到OneDrive.

重要的一些细节:

> Rasbian 9 Stretch

> Python 2.7.13& Python 3.5.3(试过两者)

> OneDrive企业帐户

非常感谢任何能指出我正确方向的人:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的schedule模块和onedrive模块来实现定时抓取onedrive文件到本地文件夹。 首先需要安装schedule和onedrive模块,可以使用以下命令进行安装: ``` pip install schedule pip install onedrive-sdk-python ``` 接下来,你需要获得onedrive的API凭证,具体步骤可以参考Microsoft官方文档:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/app-registration?view=odsp-graph-online 获取到API凭证后,你可以使用以下代码实现定时抓取onedrive文件到本地文件夹: ```python import schedule import time import os from onedrivesdk import ( OneDriveClient, http, AuthProvider ) # 定义抓取间隔时间(秒) INTERVAL = 60 * 10 # 定义本地文件夹路径和要抓取的onedrive文件路径 LOCAL_FOLDER_PATH = "D:/onedrive_files" ONEDRIVE_FILE_PATH = "/Documents/file.txt" # 定义onedrive API凭证信息 CLIENT_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' CLIENT_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' REDIRECT_URI = 'http://localhost:8080' REFRESH_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # 初始化auth_provider和client auth_provider = AuthProvider( client_id=CLIENT_ID, client_secret=CLIENT_SECRET, redirect_uri=REDIRECT_URI, refresh_token=REFRESH_TOKEN ) client = OneDriveClient(auth_provider=auth_provider) def download_file(): # 获取onedrive文件的下载链接 item = client.item(path=ONEDRIVE_FILE_PATH) download_url = client.item(drive='me', id=item.id).get('@microsoft.graph.downloadUrl') # 下载文件到本地文件夹 response = http.get(download_url) file_name = os.path.basename(ONEDRIVE_FILE_PATH) with open(os.path.join(LOCAL_FOLDER_PATH, file_name), "wb") as f: f.write(response.content) print("File downloaded successfully!") schedule.every(INTERVAL).seconds.do(download_file) while True: schedule.run_pending() time.sleep(1) ``` 以上代码定义了定时抓取间隔时间、本地文件夹路径、要抓取的onedrive文件路径以及API凭证信息。在`download_file`函数中,首先使用`client.item`方法获取onedrive文件的信息,然后使用`client.item(drive='me', id=item.id).get('@microsoft.graph.downloadUrl')`方法获取文件的下载链接,最后使用`http.get`方法下载文件到本地文件夹。 如果你想要抓取其他类型的文件,只需要将`ONEDRIVE_FILE_PATH`更改为相应的路径即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值