Привет!
У меня возникают проблемы с загрузкой файла из SharePoint с использованием последней версии Office365 2.2.1. Когда я пытаюсь загрузить файл, появляется ошибка "MissingSchema" из модуля запросов. Я не знаю, что случилось, если я вернусь к версии 2.1.5, код будет работать нормально. Большое спасибо, и я ценю усердную работу в этом модуле; супер полезно!
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File
def auth(username, password):
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
ctx = ClientContext(url, ctx_auth)
return ctx
ctx = auth(username, password)
response = File.open_binary(ctx, relative_url)
Ошибка:
MissingSchema: Invalid URL "<bound method ClientContext.service_root_url of <office365.sharepoint.client_context.ClientContext object at 0x7fb4e44c3d90>>web/getfilebyserverrelativeurl('MYRELATIVEURL')/\\$value": No schema supplied. Perhaps you meant http://<bound method ClientContext.service_root_url of <office365.sharepoint.client_context.ClientContext object at 0x7fb4e44c3d90>>web/getfilebyserverrelativeurl('MYRELATIVEURL')/\$value?
Используя MacOS,
Office365 2.2.1,
Python 3.8.3,
запросы 2.2.4
В версии 2.2.1 есть ошибка, вам нужно либо использовать последнюю версию git, либо исправить ее вручную в вашей установке здесь https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Обратите внимание, что в вашей версии ctx.service_root_url
- это свойство, но должно быть методом ctx.service_root_url()
Спасибо @efremovd и @etiennecelery за то, что вы их поймали и точно определили, это действительно ошибка, которая встречается в версии 2.2.1
из-за рефакторинга свойства service_root_url
в метод.
Как уже упоминалось, последняя версия, доступная на GitHub, решает эту проблему:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
В качестве альтернативы файл можно загрузить, как показано ниже:
file_url = '{server-relative-path-to-download}'
with open(download_path, "wb") as local_file:
file = ctx.web.get_file_by_server_relative_url(file_url).download(local_file).execute_query()
Спасибо!! Отличная работа
Закрытие этого с тех пор было решено, и была выпущена версия 2.2.2
.
Самый полезный комментарий
В версии 2.2.1 есть ошибка, вам нужно либо использовать последнюю версию git, либо исправить ее вручную в вашей установке здесь https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Обратите внимание, что в вашей версии
ctx.service_root_url
- это свойство, но должно быть методомctx.service_root_url()