Я пытаюсь получить и сохранить в файл JPG.
from shareplum import Site
from shareplum import Office365
from shareplum.site import Version
server_url = "https://xxx.sharepoint.com/"
site_url = "sites/Technicians/"
un = "un"
pw = "pw"
authcookie = Office365(server_url, username=un, password=pw).GetCookies()
site = Site(server_url + site_url, version=Version.v2016, authcookie=authcookie)
folder = site.Folder('Shared Documents/Technical client documentation' \
'/Clients/TestAccount/Pictures')
p = folder.get_image('test.jpg')
Соответствующий код из библиотеки. Я добавил get_image. Я использовал эту статью в качестве ссылки.
def get_file(self, file_name):
response = self._session.get(self.site_url + f"/_api/web/GetFileByServerRelativeUrl('{self.info['d']['ServerRelativeUrl']}/{file_name}')/$value")
return response.text
def get_image(self, file_name):
response = self._session.get(self.site_url + f"/_api/web/GetFileByServerRelativeUrl('{self.info['d']['ServerRelativeUrl']}/{file_name}')/$value")
if response.status_code== 200:
with open('/home/bruce/test_scripts/pictestNew.jpg', 'wb') as f:
# r.raw.decode_content = True
shutil.copyfileobj(response.raw, f)
return "ok"
Прекрасно работает с текстовыми файлами. Кроме того, если я сделаю печать (response.text), вы получите то, что ожидаете увидеть, если попытаетесь открыть двоичный файл изображения в текстовом редакторе.
Делая это, как указано выше, файл был создан, но пустой. Нет ошибок.
Я попытался вернуть текст, а затем записать его прямо в файл.
p = folder.get_image('test.jpg')
p = bytearray(p)
P будет возвращенным response.text тогда:
with open('picOut1.jpg', 'wb') as f:
f.write(p)
Это дало мне файл изображения правильного размера, но при попытке просмотра я получил
Ошибка при интерпретации файла изображения JPEG (Не файл JPEG: начинается с 0xef 0xbf
Поиск, который привел меня к связанной статье и другой попытке. Я знаю, что данные есть, я просто не не знаю, как его сохранить.