Я хочу получить список всех файлов в моем личном хранилище oneDrive/sharepoint в моей компании с помощью Python. Однако я получаю только пустой список в качестве возврата без каких-либо ошибок.
Мой code выглядит следующим образом (взято из Sharepoint_files_python):
Это дает пустой список в качестве вывода: []
И все остальное, к чему я пытаюсь получить доступ в ctx.web, также пусто, например:
[]
Мой ожидаемый результат будет: ['file.xlsx','file_35.xlsx',....]
Однако я могу напрямую получить доступ к отдельным файлам (но они обновляются и изменяются, поэтому непрактичны для жесткого codeирования) в этой папке через:
Я получаю ожидаемый результат чтения файла и его доступности в python.
Кто-нибудь знает, почему при выполнении полного рабочего codeа sharepoint не возникает ошибок и как мне получить список файлов в моей папке?
Большое спасибо за помощь!
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.user_credential import UserCredential
from office365.sharepoint.files.file import File
import io
user = 'user'
pw = 'pw'
url = 'https://company-my.sharepoint.com'
rel_url = '/personal/name_company/Documents/further/path/to/folder/'
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(user, pw):
ctx = ClientContext(url, ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print('Authenticated into sharepoint as: ',web.properties['Title'])
else:
print(ctx_auth.get_last_error())
folder = ctx.web.get_folder_by_server_relative_url(folder_url)
fold_names = []
sub_folders = folder.files #Replace files with folders for getting list of folders
ctx.load(sub_folders)
ctx.execute_query()
for s_folder in sub_folders:
fold_names.append(s_folder.properties["Name"])
print(fold_names)
root_folder = ctx.web.default_document_library().root_folder
ctx.load(root_folder,['Files'])
ctx.execute_query()
for f in root_folder.files:
print(f.name)
url = 'https://company-my.sharepoint.com/personal/name_company/Documents/further/path/to/folder/file.xlsx'
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(user, pw):
ctx = ClientContext(url, ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Authentication successful")
else:
print(ctx_auth.get_last_error())
resp = File.open_binary(ctx,url)
bytes_file_obj = io.BytesIO()
bytes_file_obj.write(resp.content)
bytes_file_obj.seek(0) #set file object to start
df = pd.read_excel(bytes_file_obj,engine='openpyxl',header=0)
print(df)