مرحبًا 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 ("لقد فعلت هذا وذاك الخطأ ...")
إضافة هذا قبل أن يصلح 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))