当涉及到使用python使用REST时,我是一个绝对的初学者。我们已经收到了一个共享点URL,在“文档”部分的这些文件夹中有多个文件夹和多个文件。我得到了一个'app_id‘和一个’秘密_令牌‘。
我正在尝试访问.csv文件并将它们作为数据读取并执行操作。在我下载了.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,我应该使用整个网址还是直到####.com还好?
到目前为止,这就是我所拥有的,接下来我想从各自的文件夹中读取文件,并将它们转换成一个数据文件?这些文件将始终采用.csv格式
文件夹的示例层次结构如下:
文件->文件夹A,文件夹B
文件夹A-> a1.csv,a2.csv
文件夹B-> b1.csv,b2.csv
我应该能够移动到任何我想要的文件夹,并根据我的要求读取文件。
谢谢你的帮助。
发布于 2021-12-30 02:13:46
这适用于我,使用Sharepoint应用程序标识与关联的客户端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))
一些参考资料:
对意见采取后续行动的补充说明:
站点路径不包括站点主页的完整url (以.aspx结尾)--它只是以站点的名称(或者子站点,如果与您的情况相关)结束。
您不需要使用配置文件来存储Sharepoint应用程序标识的身份验证凭据--您可以将spo_conf"RMAppID“替换为Sharepoint生成的客户端Id的值,并对客户端秘密进行类似的操作。但这是一个简单的示例,说明了JSON文件的文本是什么样子的:
{
"MyAppName":{
"clientId": "my-client-id",
"clientSecret": "my-client-secret",
"title":"name_for_application"
}
}
https://stackoverflow.com/questions/70525984
复制相似问题