Office365-rest-python-client: tidak dapat mengunduh file melalui get_file_by_server_relative_url

Dibuat pada 21 Mei 2020  ·  4Komentar  ·  Sumber: vgrem/Office365-REST-Python-Client

Halo @vgrem , kode berikut memunculkan 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()

Akan baik-baik saja untuk menambahkan beberapa pesan ke kesalahan itu seperti ini
```
raise ValueError('kamu melakukan ini dan itu salah...')

question

Semua 4 komentar

menambahkan ini sebelum file.read() memperbaiki masalah saya

client_context.load(file)
client_context.execute_query()

Itu benar, itu adalah metode yang hilang, metode File.read mengharapkan metadata file ( properti ServerRelativeUrl khususnya untuk menangani file dengan benar) untuk diambil sebelum file diunduh:

client_context.load(file)  
client_context.execute_query()

Karena mungkin tidak begitu intuitif untuk mengunduh konten file, metode lain File.download telah diperkenalkan, sekarang file dapat diunduh seperti ini:

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()

Terima kasih @vgrem , ini adalah peningkatan kegunaan yang luar biasa untuk pendatang baru!

file.download apakah itu bagian dari 2.1.7.post1?

terbaru dari pip hanya bisa sejauh itu
daftar pip | grep -i kantor
Office365-REST-Python-Client 2.1.7.post1

2.1.8
instal pip --upgrade Office365-REST-Python-Client==2.1.8
GALAT: Tidak dapat menemukan versi yang memenuhi persyaratan Office365-REST-Python-Client==2.1.8 (dari versi: 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)
GALAT: Tidak ditemukan distribusi yang cocok untuk Office365-REST-Python-Client==2.1.8

==== Solusi Suhu ====

impor file temp
impor os
download_path = os.path.join(tempfile.mkdtemp(), os.path.basename(lokasi))
file_url = '/sites/Integration/Shared Documents/SomeFolder/somefile.csv'
download_path = os.path.join(tempfile.mkdtemp(), os.path.basename(file_url))
download_path
dengan open(download_path, "wb") sebagai local_file:
source_file = ctx.web.get_file_by_server_relative_url(file_url)
sumber data
ctx.load(file_sumber)
ctx.execute_query()
r = source_file.read()
ctx.execute_query()
print("Data:", r)
local_file.write(r)
lokal_file.close()
print("[Oke] file telah diunduh: {0}".format(download_path))

Apakah halaman ini membantu?
0 / 5 - 0 peringkat