繁体   English   中英

如何在 ZA7F5F35426B92742117FC9231B5638 中使用 sharepoint REST API 读取文件

[英]How to read file using sharepoint REST API in Python

在使用 REST API 和 python 时,我绝对是个初学者。 我们收到了一个共享点 URL,它在“文档”部分的这些文件夹中有多个文件夹和多个文件。 我得到了一个“app_id”和一个“secret_token”。

我正在尝试访问 .csv 文件并将它们作为 dataframe 读取并执行操作。 在我下载了.csv 并在本地完成后,操作代码已准备就绪,但我需要有关如何使用 python 连接共享点的帮助,这样我就不必再下载这么重的文件了。

我知道已经有多个关于堆栈溢出的查询,但没有一个有助于到达我想要的地方。

我做了以下事情,但我不确定下一步该怎么做:

import json
from office365.runtime.auth.user_credential import UserCredential
from office365.sharepoint.client_context import ClientContext
from office365.runtime.http.request_options import RequestOptions

site_url = "https://<company-name>.sharepoint.com"
ctx = ClientContext(site_url).with_credentials(UserCredential("{app_id}", "{secret_token}"))

上面的site_url,我应该使用整个URL还是直到####.com都可以?

这是我到目前为止所拥有的,接下来我想从各个文件夹中读取文件并将它们转换为 dataframe? 文件将始终为.csv 格式

文件夹的示例层次结构如下:

文档 --> 文件夹 A、文件夹 B

文件夹 A --> a1.csv, a2.csv

文件夹 B --> b1.csv, b2.csv

我应该能够移动到我想要的任何文件夹并根据我的要求读取文件。

谢谢您的帮助。

这对我有用,使用 Sharepoint App Identity 和关联的客户端 ID 和客户端密钥。

首先,我演示了验证和读取特定文件,然后从文件夹中获取文件列表并读取第一个文件。

import pandas as pd
import json
import io

from office365.sharepoint.client_context import ClientCredential
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File

#Authentication (shown for a 'modern teams site', but I think should work for a company.sharepoint.com site:
site="https://<myteams.companyname.com>/sites/<site name>/<sub-site name>"
#Read credentials from a json configuration file:
spo_conf = json.load(open(r"conf\spo.conf", "r")) 

client_credentials = ClientCredential(spo_conf["RMAppID"]["clientId"],spo_conf["RMAppID"]["clientSecret"])
ctx = ClientContext(site).with_credentials(client_credentials)


#Read a specific CSV file into a dataframe:
folder_relative_url = "/sites/<site name>/<sub site>/<Library Name>/<Folder Name>"
filename = "MyFileName.csv"
response = File.open_binary(ctx, "/".join([folder_relative_url, filename]))
df = pd.read_csv(io.BytesIO(response.content))


#Get a list of file objects from a folder and read one into a DataFrame:

def getFolderContents(relativeUrl):
    contents = []
    library = ctx.web.get_list(relativeUrl)
    all_items = library.items.filter("FSObjType eq 0").expand(["File"]).get().execute_query()
    for item in all_items:  # type: ListItem
        cur_file = item.file
        contents.append(cur_file)
    return contents

fldrContents = getFolderContents('/sites/<site name>/<sub site>/<Library Name>')
response2 = File.open_binary(ctx, fldrContents[0].serverRelativeUrl)
df2 = pd.read_csv(io.BytesIO(response2.content))

一些参考资料:

相关的 SO 线程

Office365 库 github 网站

获取文档库文件夹中的内容列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM