如何使用 Python 访问和修改 Sharepoint 中的文件

如何使用 Python 访问和修改 Sharepoint 中的文件

列出云上的文件并将文件从本地上传到 MS Sharepoint

Upload and Modify Files in Microsoft Sharepoint using Python

介绍

有时很容易在互联网上找到您要查找的内容,但应用结果可能很困难。本文介绍如何使用 Python SDK 访问 sharepoint,以及如何从 Microsoft Sharepoint 和 Teams Channel 获取访问密钥。然后解释如何在 Microsoft Sharepoint 中列出、上传、修改文件。

工作流程:

  • 安装 Office365 Python 客户端
  • 从 Microsoft Sharepoint 创建身份验证访问
  • 使用钥匙访问
  • 列出文件夹
  • 列出文件
  • 移动文件
  • 重新命名文件
  • 删除文件
  • 上传文件(额外:将数据框上传到 excel 文件)

安装所需的python库

如果要上传excel文件,请安装pandas

 $pip 安装熊猫  
 $pip install Office365-REST-Python-Client

否则,您只需要 Office365-REST-Python-Client。

 $pip install Office365-REST-Python-Client

创建凭据以访问 Microsoft 文件夹

让我们首先展示如何从 Microsoft 站点获取访问 ID 和访问密钥以访问应用程序。我们需要授予我们要访问的文件夹的权限,如下面的链接所示。此文件夹区域可以位于 MS Teams 频道或 MS Sharepoint 中的任何位置。

[

使用仅限 SharePoint 应用程序授予访问权限

SharePoint App-Only 是较旧但仍然非常相关的设置应用程序主体的模型。该模型适用于……

docs.microsoft.com

](https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)

在浏览器中导航到您的 MS Teams 或 MS Sharepoint 文件夹站点(例如 https:// .sharepoint.com/teams/DataShare ) 然后搜索带有此添加的新应用注册页面 ( ** _/layout/15/appregnew.aspx** )。

在如下页面中,点击 Create 按钮创建一个 Client Id 和 Client Secret 并填写剩余信息。

保存表单时,您将看到一个显示以下结果的屏幕。 不要忘记保存客户端 ID 和客户端机密信息!

现在是时候为我们注册的应用程序定义必要的访问权限了。正如我们之前所做的那样,在浏览器中导航到您的 MS Teams 或 MS Sharepoint 文件夹站点并添加 ( / ** _layouts/15/appinv.aspx** ) 然后搜索。

通过将我们的 Client Id 信息添加到 App ID 部分,我们可以将其他信息与 Lookup 按钮相匹配。

https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs

然后,请仅将必要的权限添加到您要在应用程序中使用 XML 格式的文件夹。 正确的 选项可以是 读、写、管理完全控制 .在本教程中,我们选择了 完全控制 显示所有操作的选项。

 <AppPermissionRequests AllowAppOnlyPolicy="true">  
 <AppPermissionRequest Scope="[ http://sharepoint/content/sitecollection/web/list](http://sharepoint/content/sitecollection/web/list) "  
 右=“完全控制” />  
 </AppPermissionRequests>  

当 XML 选项与 Create 按钮一起保存时,它会被定向到新页面。通过选择要从此页面访问的文件夹来允许该应用程序。

客户端 ID 和客户端机密信息存储为 JSON 文件,以在 Python 应用程序中使用。

Create Json file for credentials

将 Sharepoint 与 Json 凭据连接

要使用 MS SharePoint API,我们需要创建一个带有客户端 ID 和客户端密码的 ClientContext 对象。我们可以通过使用包含我们之前获得并保存的客户端 ID 和客户端机密信息的 json 文件来做到这一点。

使用以下代码片段,我们可以创建一个 ctx 对象使用 json 文件的位置。

Connect Sharepoint with Keys

 ctx = connect_sharepoint(cwd="path/of/your/credential/json/folder")

通过以下操作部分,我们将使用此客户端上下文对象( ctx )。

列表

列表操作将在两个不同的小节中进行检查,即列表文件夹和列表文件。

1) 列出文件夹

使用两个输入客户端上下文对象调用以下函数( ctx ) 和要列出的文件夹地址。如果需要函数输出以供将来使用,则可以将返回值分配给列表。

 文件夹 = list_folders(ctx,"/teams/<channel> /Shared%20Documents/General")

VS Code Jupyter ( IPython Notebook ) output of list folders

2) 列出文件

和以前一样,只有 “libraryRoot.folder” 已更改为 “libraryRoot.files” 在以下代码段中。

 文件 = list_files(ctx,"/teams/DataShare/Shared%20Documents/General/DummyFolder")

VS Code Jupyter ( IPython Notebook ) output of list files

移动文件

移动操作通过选择当前文件并提供新文件路径来工作。在下面的代码片段中,它使用了旧文件位置、新文件位置和客户端上下文对象 (ctx) 作为输入。

VS Code Jupyter ( IPython Notebook ) output of move file

重新命名文件

重命名操作通过在移动到相同位置时重命名它在后台工作。因此,它与之前的功能非常相似。

VS Code Jupyter ( IPython Notebook ) output of rename file

删除文件

对于删除过程,使用对象的sharepoint地址和Client Context对象进行事务 (ctx) 我们以前用过的。

VS Code Jupyter ( IPython Notebook ) output of delete file

上传文件

要将文件上传到 SharePoint,我们首先复制一个 SharePoint 目录地址。以下代码将其本地文件夹中的虚拟文件写入服务器目录中创建的具有新名称的文件。

VS Code Jupyter ( IPython Notebook ) output of upload file

将 DataFrame 上传到 Sharepoint 中的 Excel 文件

要加载数据帧,本地文件夹中的文件必须转换为 BytesIO 对象格式。之后,可以将其移动到 MS Sharepoint 服务器。

VS Code Jupyter ( IPython Notebook ) output of upload dataframe

概括:

  • Office365 Python SDK 与客户端 ID 和客户端密码信息一起用于与 MS Teams 频道进行交互。我们可以与其他 Microsoft 产品(如 MS Sharepoint、OneDrive、Teams 等)进行相同的交互。
  • 实施了两个最重要的阶段,新应用程序注册( appregnew.aspx ) 和应用程序权限 ( 应用程序.aspx )。
  • Client Id 和 Client Secret 信息需要保存和存储。
  • 使用给定的 gist 代码片段,您可以执行任何您想要的 ( 列出、移动、重命名、删除、上传 ) 操作。另外,您可以通过上传 Dataframe 远程管理 MS Teams 和 MS Sharepoint 中的 Excel 文件中的表格。

使用以下链接访问所有功能: GitHub

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/23554/26261001

posted @ 2022-09-10 01:27  哈哈哈来了啊啊啊  阅读(2231)  评论(0编辑  收藏  举报