Office365-rest-python-client: غير قادر على تنزيل الملف عبر get_file_by_server_relative_url

تم إنشاؤها على ٢١ مايو ٢٠٢٠  ·  4تعليقات  ·  مصدر: vgrem/Office365-REST-Python-Client

مرحبًا vgrem ، ترفع الشفرة التالية ValueError .

...
web = client_context.web
client_context.load(web)
server_relative_url = f'/{folder_name}/{filename}'
logger.info(f'relative path: {server_relative_url}')
file = web.get_file_by_server_relative_url(server_relative_url)
return file.read()

سيكون من الجيد إضافة بعض الرسائل إلى هذا الخطأ مثل هذا
""
رفع ValueError ("لقد فعلت هذا وذاك الخطأ ...")

question

ال 4 كومينتر

إضافة هذا قبل أن يصلح file.read() مشكلتي

client_context.load(file)
client_context.execute_query()

هذا صحيح ، كانت هذه هي الطرق المفقودة ، وتتوقع الطريقة File.read بيانات تعريف الملف (الخاصية ServerRelativeUrl وجه الخصوص لمعالجة الملف بشكل صحيح) ليتم استردادها قبل تنزيل الملف:

client_context.load(file)  
client_context.execute_query()

نظرًا لأنه قد لا يكون تنزيل محتوى ملف هو الأكثر سهولة ، فقد تم تقديم طريقة أخرى File.download ، والآن يمكن تنزيل الملف على النحو التالي:

with open(download_path, "wb") as local_file:
    source_file = ctx.web.get_file_by_server_relative_url(file_url)
    source_file.download(local_file)
    ctx.execute_query()

شكرًا vgrem ، يعد هذا

file.download هل هو جزء من 2.1.7.post1؟

الأحدث من النقطة يمكن أن يذهب إلى هذا الحد فقط
قائمة النقاط | grep -i مكتب
Office365-REST-Python-Client 2.1.7.post1

2.1.8
تثبيت نقطة - ترقية Office365-REST-Python-Client == 2.1.8
خطأ: تعذر العثور على إصدار يلبي متطلبات Office365-REST-Python-Client == 2.1.8 (من الإصدارات: 1.0.0 ، 1.0.1 ، 1.1.0 ، 2.0.0 ، 2.1.1 ، 2.1.2 ، 2.1.3، 2.1.4، 2.1.5، 2.1.6.post2، 2.1.7.post1)
خطأ: لم يتم العثور على توزيع مطابق لـ Office365-REST-Python-Client == 2.1.8

==== حل مؤقت ====

استيراد ملف temp
استيراد نظام التشغيل
download_path = os.path.join (tempfile.mkdtemp () ، os.path.basename (الموقع))
file_url = '/ sites / Integration / Shared Documents / SomeFolder / somefile.csv'
download_path = os.path.join (tempfile.mkdtemp () ، os.path.basename (file_url))
download_path
مع open (download_path، "wb") كـ local_file:
source_file = ctx.web.get_file_by_server_relative_url (file_url)
مصدر الملف
ctx.load (ملف_المصدر)
ctx.execute_query ()
r = source_file.read ()
ctx.execute_query ()
طباعة ("البيانات:" ، ص)
local_file.write (r)
local_file.close ()
print ("تم تنزيل الملف [Ok]: {0}". format (download_path))

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات