рдореЗрд░рд╛ рдкрд╛рдпрдерди 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 рдореЗрдВ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рд╕реНрдЯреЛрд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╣реИред
рдПрдХ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореИрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд┐рд╕реА рдиреЗ рдХрд┐рдпрд╛? рдХреЛрдИ рдорджрдж? рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдХреЛрдб рдПрдХ рдмрдбрд╝реА рдорджрдж рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡реЗрдм рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ рд╣реВрдВ!
рдирдорд╕реНрддреЗ,
рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рд▓реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд╕реВрдЪреА рд╢реАрд░реНрд╖рдХ = "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝"
рд╕рд╛рдЗрдЯ = "рдПрдмреАрд╕реА"
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)
рдбреАрдИрдПрдлрд╝ рдбрд╛рдЙрдирд▓реЛрдбрдлрд╝рд╛рдЗрд▓ (рд╕реАрдЯреАрдПрдХреНрд╕, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо):
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 рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдк рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдЬреИрд╕реЗ/рд╕рд╛рдЗрдЯ/рд╕рд╛рдЗрдЯрдирд╛рдо/рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЕрдВрддрд┐рдо рдХреЛрдб рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВред рдпрд╣ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рди рджреЗрдВ, @vgrem рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ :) ... рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реИрдВ ....
рдареАрдХ рд╣реИ, рд╕рд╛рдЭрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдПрдоред