Office365-rest-python-client: рдореИрдВ рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓реЗ SharePoint рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдорд╛рд░реНрдЪ 2019  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vgrem/Office365-REST-Python-Client

рдореЗрд░рд╛ рдкрд╛рдпрдерди 3 рдХреЛрдб:

Office365.runtime.auth.authentication_context рд╕реЗ рдЖрдпрд╛рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╕рдВрдЧ
Office365 рд╕реЗ.sharepoint.client_context рдЖрдпрд╛рдд ClientContext

рдпреВрдЖрд░рдПрд▓ = ' https://company.sharepoint.com/sites/abc '
ctx_auth = рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╕рдВрдЧ (url = url)
рдЕрдЧрд░ ctx_auth.acquire_token_for_user(username='[email protected]', рдкрд╛рд╕рд╡рд░реНрдб='12345'):
рд╕реАрдЯреАрдПрдХреНрд╕ = рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ (рдпреВрдЖрд░рдПрд▓, рд╕реАрдЯреАрдПрдХреНрд╕_рдСрде)
рд╕реВрдЪрд┐рдпрд╛рдБ = ctx.web.lists
ctx.load (рд╕реВрдЪрд┐рдпрд╛рдБ)
ctx.execute_query ()
рд╕реВрдЪреА рдореЗрдВ рдПрд▓ рдХреЗ рд▓рд┐рдП:
рдкреНрд░рд┐рдВрдЯ (рдПрд▓. рдЧреБрдг ['рд╢реАрд░реНрд╖рдХ'])

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реЗ, рдореИрдВ рд╕рд╛рдЗрдЯ рдореЗрдВ рдЖрдЗрдЯрдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореЗрд░реА рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕ 3 рдореЗрдВ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рд╕реНрдЯреЛрд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╣реИред

рдПрдХ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореИрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд┐рд╕реА рдиреЗ рдХрд┐рдпрд╛? рдХреЛрдИ рдорджрдж? рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдХреЛрдб рдПрдХ рдмрдбрд╝реА рдорджрдж рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡реЗрдм рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ рд╣реВрдВ!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рди рджреЗрдВ, @vgrem рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ :) ... рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реИрдВ ....

рдареАрдХ рд╣реИ, рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    list_object = ctx.web.lists.get_by_title(listTitle)
    folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()

    folders = folder.folders
    ctx.load(folders)
    ctx.execute_query()

    for myfolder in folders:
        print("File name: {0}".format(myfolder.properties["Name"]))

рдПрдоред

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ,
рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рд▓реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  1. рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рдПрдВ:

рд╕реВрдЪреА рд╢реАрд░реНрд╖рдХ = "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝"
рд╕рд╛рдЗрдЯ = "рдПрдмреАрд╕реА"

def fncPrintLibraryContents(ctx, listTitle):

try:

    list_object = ctx.web.lists.get_by_title(listTitle)
    folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()

    files = folder.files
    ctx.load(files)
    ctx.execute_query()

    return files

except:

    print('Problem printing out library contents')   
    sys.exit(1)
  1. рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдкреНрд░реЛ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдбреАрдИрдПрдлрд╝ рдбрд╛рдЙрдирд▓реЛрдбрдлрд╝рд╛рдЗрд▓ (рд╕реАрдЯреАрдПрдХреНрд╕, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо):

try:
    with open(fileName, "wb") as localFile:            
        relativeUrl = '/sites/{0}/Shared%20Documents/{1}'.format(site, fileName)
        response = File.open_binary(ctx, relativeUrl)
        localFile.write(response.content) 
        localFile.close()

except:

    print('Problem downloading file:', fileName)
    sys.exit(1)

myfiles = fncPrintLibraryContents(ctx, listTitle)

myfiles рдореЗрдВ myfile рдХреЗ рд▓рд┐рдП:
рдкреНрд░рд┐рдВрдЯ ("рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓: {0}"ред рдкреНрд░рд╛рд░реВрдк (myfile.properties ["рдирд╛рдо"]))
рдбрд╛рдЙрдирд▓реЛрдбрдлрд╛рдЗрд▓ (рд╕реАрдЯреАрдПрдХреНрд╕, `myfile.properties ["рдирд╛рдо"])

рдПрдоред

рдХреГрдкрдпрд╛, рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдбреЗрдВрдЯ рдХрд░реЗрдВ, рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдПрдоред

рдЕрд░реЗ,

рдЗрддрдиреЗ рд╢реАрдШреНрд░ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рддрдХ рджреЗрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди, рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕рднреА рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд╣реАрдВ рдЧрд▓рдд рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╢реАрд░реНрд╖рдХ рдХреА рдореЗрд░реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рднреА рдореИрдВ рд╢реАрд░реНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдирд╛рдо рдХреЛ рджреЗрдХрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВред рдореИрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

рдЗрд╕ рдмреАрдЪ, рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рдЪрд▓ рд░рд╣рд╛ рдХреЛрдб (рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд░реВрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рднреА рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдо рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ):

`office365.runtime.auth.authentication_context рд╕реЗ рдЖрдпрд╛рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╕рдВрдЧ
Office365 рд╕реЗ.sharepoint.client_context рдЖрдпрд╛рдд ClientContext
Office365.sharepoint.file рд╕реЗ рдЖрдпрд╛рдд рдлрд╝рд╛рдЗрд▓
Office365.sharepoint.file_creation_information рд╕реЗ FileCreationInformation рдЖрдпрд╛рдд рдХрд░реЗрдВ

def read_folder_and_files (рд╕рдВрджрд░реНрдн, list_title):
"""рдлрд╝реЛрд▓реНрдбрд░ рдЙрджрд╛рд╣рд░рдг рдкрдврд╝реЗрдВ"""
list_obj = context.web.lists.get_by_title(list_title)
рдлрд╝реЛрд▓реНрдбрд░ = list_obj.root_folder
рд╕рдВрджрд░реНрдн рд▓реЛрдб (рдлрд╝реЛрд▓реНрдбрд░)
рд╕рдВрджрд░реНрдн.execute_query ()
рдкреНрд░рд┐рдВрдЯ ("рд╕реВрдЪреА рдпреВрдЖрд░рдПрд▓: {0}"ред рдкреНрд░рд╛рд░реВрдк (рдлрд╝реЛрд▓реНрдбрд░ред рдЧреБрдг ["рд╕рд░реНрд╡рд░ рд░рд┐рд▓реЗрдЯрд┐рд╡ рдпреВрдЖрд░рдПрд▓"]))

files = folder.files
context.load(files)
context.execute_query()
for cur_file in files:
    print("File name: {0}".format(cur_file.properties["Name"]))

folders = context.web.folders
context.load(folders)
context.execute_query()
for folder in folders:
    print("Folder name: {0}".format(folder.properties["Name"]))

def download_file (рд╕рдВрджрд░реНрдн):
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = File.open_binary (рд╕рдВрджрд░реНрдн, "/ рд╕рд╛рдЗрдЯреНрд╕/рдирдпрд╛/рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/2011-рдП/file1.csv")
рдкреНрд░рд┐рдВрдЯ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)
рдкреНрд░рд┐рдВрдЯ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╕рд╛рдордЧреНрд░реА)
open(r"C:UsersaakashbDownloadstestfile1.csv", "wb") рдХреЗ рд╕рд╛рде local_file рдХреЗ рд░реВрдк рдореЗрдВ:
local_file.write(response.content)

рд╕реАрдЯреАрдПрдХреНрд╕ = рдХреЛрдИ рдирд╣реАрдВ
рдпреВрдЖрд░рдПрд▓ = ' https://company.sharepoint.com/sites/new '
ctx_auth = рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╕рдВрдЧ (url = url)
рдЕрдЧрд░ ctx_auth.acquire_token_for_user(username='[email protected]', рдкрд╛рд╕рд╡рд░реНрдб='12345'):
рд╕реАрдЯреАрдПрдХреНрд╕ = рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ (рдпреВрдЖрд░рдПрд▓, рд╕реАрдЯреАрдПрдХреНрд╕_рдСрде)
read_folder_and_files(ctx, 'рджрд╕реНрддрд╛рд╡реЗрдЬрд╝')

рдкреНрд░рд┐рдВрдЯ ('рдлрд╝рдВрдХреНрд╢рди рджрд░реНрдЬ рдХрд░рдирд╛')

рдбрд╛рдЙрдирд▓реЛрдб_рдлрд╛рдЗрд▓ (рд╕реАрдЯреАрдПрдХреНрд╕)

рдкреНрд░рд┐рдВрдЯ ('рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп') `

1) рдореЗрд░реЗ рдХреЛрдб рдХреА рдЯреВрдЯреА рд╣реБрдИ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рджрд┐рдпрд╛ рдерд╛ред
2) рдмрд╕ рдЕрдкрдирд╛ рдХреЛрдб рдЪрд▓рд╛рдпрд╛ рдФрд░ рдЪреЗрдХ рдХрд┐рдпрд╛, рдпрд╣ рд╡рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореЗрд░рд╛ рдХреЛрдб рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд░реВрдЯ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд░рд╣рд╛ рд╣реИ (рдХрд┐рд╕реА рднреА рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ)ред рд▓реЗрдХрд┐рди рдореИрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
3) рдореИрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рднреА рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рд╕реВрдЪреА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ @vgrem рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛

рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд╕рд╛рдЗрдЯрдкреЗрдЬ
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд╕реНрдЯрд╛рдЗрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: _catalogs
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рдлреЙрд░реНрдорд╕реЗрд╡рд░рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: _рдирд┐рдЬреА
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд╕рд╛рдЗрдЯрдПрд╕реЗрдЯреНрд╕
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рдЫрд╡рд┐рдпрд╛рдВ
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: рд╕реВрдЪрд┐рдпрд╛рдБ
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо: _cts

рдореЗрд░реЗ рдкрд╛рд╕ SharePoint Doc Lib рдореЗрдВ рдХреЛрдИ рднреА рдлрд╝реЛрд▓реНрдбрд░ рдирд╣реАрдВ рд╣реИред

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ Doc Lib рдлреЛрд▓реНрдбрд░ рдФрд░ рдЙрдирдХреА рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдирдорд╕реНрддреЗ,
рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/vgrem/Office365-REST-Python-Client/issues/91
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕ рд░реЗрдЦрд╛ рдкрд░ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдЬрд╛рддреА рд╣реИ:

рдлрд╝реЛрд▓реНрдбрд░ = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])

рдЕрдЧрд░ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рддреЛ рдореИрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛ред
рдПрдоред

... рдореЗрд░рд╛ рдорддрд▓рдм get_by_title рдХреЗ рдмрдЬрд╛рдп get_folder_by_server_relative_url рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

app_settings = {'urlrel': '/sites/abc/рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рдкрд░реАрдХреНрд╖рдг'}

рдбреАрдИрдПрдлрд╝ рдкреНрд░рд┐рдВрдЯрдлрд╝реЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА (рд╕реАрдЯреАрдПрдХреНрд╕, рд╕реВрдЪреА рд╢реАрд░реНрд╖рдХ):

try:

    #list_object = ctx.web.lists.get_by_title(listTitle)
    folder = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])
    #folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()
    #print(folder.url)

    files = folder.files
    ctx.load(files)
    ctx.execute_query()

    for myfile in files:
        print("File name: {0}".format(myfile.properties["Name"]))

except:

    print('Problem printing out library contents')   
    sys.exit(1)

рдпрджрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ ...

рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднреАрддрд░ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

def fncGetFolderContents(ctx, listTitle):

try:

    #list_object = ctx.web.lists.get_by_title(listTitle)
    folder = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])
    #folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()
    #print(folder.url)

    files = folder.files
    ctx.load(files)
    ctx.execute_query()

    #for myfile in files:
    #    print("File name: {0}".format(myfile.properties["Name"]))

    return files

except:

    print('Problem printing out library contents')   
    sys.exit(1)

рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВ, рдЬреИрд╕реЗ:

def downloadFolderFile (ctx, fileName):

try:
    with open(fileName, "wb") as localFile:            
        relativeUrl = '/sites/{0}/Shared%20Documents/{1}/{2}'.format(site, yourFolder, fileName)
        #relativeUrl = app_settings['urlrel']
        response = File.open_binary(ctx, relativeUrl)
        localFile.write(response.content) 
        localFile.close()

except:

    print('Problem downloading file:', fileName)
    sys.exit(1)

myfiles = fncGetFolderContents(ctx, listTitle)

myfiles рдореЗрдВ myfile рдХреЗ рд▓рд┐рдП:
рдкреНрд░рд┐рдВрдЯ ("рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓: {0}"ред рдкреНрд░рд╛рд░реВрдк (myfile.properties ["рдирд╛рдо"]))
downloadFolderFile(ctx, myfile.properties["Name"])

рджреЛрд╕реНрдд рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЖрдк рджреЛрдиреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрддрд░ рдореЗрдВ рд╢реАрдШреНрд░ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдкреАрдЖрдИ рдмрд┐рд▓реНрдХреБрд▓ рдХрдорд╛рд▓ рд╣реИ!

рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкрдврд╝реВрдВрдЧрд╛ рдФрд░ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди, рдХреНрдпрд╛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдирд╡реАрдирддрдо рдХреЛрдб рддрдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдореБрдЭреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдкрддрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдореИрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рд░рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдпрд╣ рдирдП рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд╣реИ рдирд╛? рдЗрд╕рд▓рд┐рдП рдореИрдВ рднреА рд╕реВрдЪреА рдлрд╝реЛрд▓реНрдбрд░ рдЪрд╛рд╣рддрд╛ рдерд╛, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВред рд╡реИрд╕реЗ рднреА, рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк рджреЛрдиреЛрдВ рдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдпрд╣рд╛рдВ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред

рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рди рджреЗрдВ, @vgrem рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ :) ... рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реИрдВ ....

рдареАрдХ рд╣реИ, рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    list_object = ctx.web.lists.get_by_title(listTitle)
    folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()

    folders = folder.folders
    ctx.load(folders)
    ctx.execute_query()

    for myfolder in folders:
        print("File name: {0}".format(myfolder.properties["Name"]))

рдПрдоред

рд╢рд╛рдирджрд╛рд░ред рдкреБрдирд░рд╛рд╡реГрддреНрдд рдлрд╝реЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА рдореБрджреНрд░рдг рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛!

рд╢реБрдХреНрд░рд┐рдпрд╛,

рдпрд╣ рдХреЛрдб рджреВрд╖рд┐рдд рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдЦрд╛рд▓реА рд╣реИрдВ - 156 рдмрд╛рдЗрдЯреНрд╕ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ?

рдореБрдЭреЗ рдЙрдкрд░реЛрдХреНрдд cosde рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ 1kb рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рджреВрд╖рд┐рдд рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЗрдВ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдореБрдЭреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ 1kb рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рджреВрд╖рд┐рдд рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓реЗрдВ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛, рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╕рд╛рдкреЗрдХреНрд╖ рдпреВрдЖрд░рдПрд▓ рдерд╛ред рдЬрдм рдореБрдЭреЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ/рд╕рд╛рдЗрдЯ/рд╕рд╛рдЗрдЯрдирд╛рдо/рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрддреНрдпрд╛рджрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рдХреЗрд╡рд▓/рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ /sites/sitename/folder/file.

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА /sites/sitename/ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рддрдм рд╕рд╛рдордЧреНрд░реА рджреВрд╖рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рдореИрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп/рд╕рд╛рдЗрдЯреНрд╕/рд╕рд╛рдЗрдЯрдирд╛рдо/ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рд╛рдкреЗрдХреНрд╖ рдпреВрдЖрд░рдПрд▓ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╣рд░ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ url рдореЗрдВ /sites/sitename рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдк рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдЬреИрд╕реЗ/рд╕рд╛рдЗрдЯ/рд╕рд╛рдЗрдЯрдирд╛рдо/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЕрдВрддрд┐рдо рдХреЛрдб рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВред рдпрд╣ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pobs93 picture pobs93  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

laszloszolnoki picture laszloszolnoki  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BradshawI picture BradshawI  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AakashBasu picture AakashBasu  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Cesaaar picture Cesaaar  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ