Office365-rest-python-client: Как я ΠΌΠΎΠ³Ρƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ SharePoint, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ²?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 27 ΠΌΠ°Ρ€. 2019  Β·  15ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: vgrem/Office365-REST-Python-Client

Мой код Python 3:

ΠΈΠ· office365.runtime.auth.authentication_context ΠΈΠΌΠΏΠΎΡ€Ρ‚ AuthenticationContext
ΠΈΠ· office365.sharepoint.client_context ΠΈΠΌΠΏΠΎΡ€Ρ‚ ClientContext

url = ' https://company.sharepoint.com/sites/abc '
ctx_auth = AuthenticationContext (url = url)
Ссли ctx_auth.acquire_token_for_user (username='[email protected] ', password =' ​​12345 '):
ctx = ClientContext (url, ctx_auth)
списки = ctx.web.lists
ctx.load (списки)
ctx.execute_query ()
для l Π² списках:
print (l.properties ['НазваниС'])

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° я ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ элСмСнты Π½Π° сайтС. Но я ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вСсь этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² AWS Lambda с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² SharePoint ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² AWS S3.

Π’ ΠΏΠ°ΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ². Π― Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всю ΠΏΠ°ΠΏΠΊΡƒ со всСми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ это сдСлал? Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ? Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ большим ΠΏΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² парсингС Π²Π΅Π±-сайтов!

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

НС Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚Π΅ мСня, Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚ @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. сначала Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ содСрТимоС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sharepoint Documents с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

listTitle = "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹"
site = "abc"

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. Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π²Ρ‹Π·Π²Π°Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

def downloadFile (ctx, fileName):

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)

для myfile в myfiles:
print ("Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°: {0}". Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (myfile.properties ["Имя"]))
downloadFile (ctx, `myfile.properties [" Имя "])

ΠΌ.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, сдСлайтС отступ Π² послСдних Π΄Π²ΡƒΡ… строках Ρ†ΠΈΠΊΠ»Π° for, я Π½Π΅ ΠΌΠΎΠ³Ρƒ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.
ΠΌ.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

Бпасибо Π·Π° Ρ‚Π°ΠΊΠΎΠΉ быстрый ΠΎΡ‚Π²Π΅Ρ‚. Π― ΠΌΠΎΠ³Ρƒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, учитывая, Ρ‡Ρ‚ΠΎ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π°. Но, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рСкурсивно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ сначала ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, которая послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Not Found. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я Π³Π΄Π΅-Ρ‚ΠΎ ошибаюсь, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ моя концСпция Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π½Π΅Π²Π΅Ρ€Π½Π°, поэтому всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ, ΡƒΠΊΠ°Π·Π°Π² это имя Π² качСствС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, я Ρ‚Π΅Ρ€ΠΏΠ»ΡŽ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Π― ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΡŽ ваш ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€ΡŽ, смогу Π»ΠΈ я это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, ΠΌΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ (Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, список ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² для root Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ я даю ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ имя ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ½ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚):

`from office365.runtime.auth.authentication_context ΠΈΠΌΠΏΠΎΡ€Ρ‚ AuthenticationContext
ΠΈΠ· 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 (названиС_списка)
folder = list_obj.root_folder
context.load (ΠΏΠ°ΠΏΠΊΠ°)
context.execute_query ()
print ("URL-адрСс списка: {0}". Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (folder.properties ["ServerRelativeUrl"]))

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 Ρ„Π°ΠΉΠ»_Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (контСкст):
response = File.open_binary (context, "/ sites / new / Shared Documents / 2011-A / file1.csv")
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΎΡ‚Π²Π΅Ρ‚)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (response.content)
с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (r "C: UsersaakashbDownloadstestfile1.csv", "wb") ΠΊΠ°ΠΊ local_file:
local_file.write (response.content)

ctx = НСт
url = ' https://company.sharepoint.com/sites/new '
ctx_auth = AuthenticationContext (url = url)
Ссли ctx_auth.acquire_token_for_user (username='[email protected] ', password =' ​​12345 '):
ctx = ClientContext (url, ctx_auth)
read_folder_and_files (ctx, 'Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹')

print ('функция Π²Π²ΠΎΠ΄Π°')

Ρ„Π°ΠΉΠ»_Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ctx)

print ('Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ') `

1) Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΡΠ»ΠΎΠΌΠ°Π½Π½ΡƒΡŽ структуру ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²Π°ΠΌ Π΄Π°Π».
2) ΠŸΡ€ΠΎΡΡ‚ΠΎ запустил свой ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ», ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния листинга. Π­Ρ‚ΠΎ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΡ€Π½Π΅ (Π° Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΏΠΊΠΈ). Но я Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ.
3) Π•Ρ‰Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ. Когда я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠ΄ @vgrem для пСрСчислСния ΠΏΠ°ΠΏΠΎΠΊ, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½Π΅ ΠΏΠ°ΠΏΠΊΠΈ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΠ°ΠΊ:

Имя папки: SitePages
Имя ΠΏΠ°ΠΏΠΊΠΈ: Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° стилСй
Имя папки: _catalogs
Имя папки: FormServerTemplates
Имя папки: _private
Имя ΠΏΠ°ΠΏΠΊΠΈ: Бсылки для ΠΎΠ±ΠΌΠ΅Π½Π°
Имя папки: SiteAssets
Имя ΠΏΠ°ΠΏΠΊΠΈ: изобраТСния
Имя ΠΏΠ°ΠΏΠΊΠΈ: ΠžΠ±Ρ‰ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹
Имя папки: Бписки
Имя папки: _cts

Π­Ρ‚ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ Π² SharePoint Doc Lib.

Π˜Ρ‚Π°ΠΊ, Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ Doc Lib ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ Ρ„Π°ΠΉΠ»Ρ‹ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ?

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,
поТалуйста, посмотритС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ здСсь: https://github.com/vgrem/Office365-REST-Python-Client/issues/91
ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² строкС, которая выглядит Ρ‚Π°ΠΊ:

folder = ctx.web.get_folder_by_server_relative_url (app_settings ['urlrel'])

Если это Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, я Π²Π΅Ρ€Π½ΡƒΡΡŒ ΠΊ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.
ΠΌ.

... я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get_folder_by_server_relative_url вмСсто get_by_title, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

app_settings = {'urlrel': '/ sites / abc / ΠžΠ±Ρ‰ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ / Π’Π•Π‘Π’'}

def printFolderContents (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"]))

except:

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

Π”Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ, Ссли это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ...

Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ TEST Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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)

для myfile в myfiles:
print ("Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°: {0}". Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (myfile.properties ["Имя"]))
downloadFolderFile (ctx, myfile.properties ["Имя"])

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо, Ρ‡ΡƒΠ²Π°ΠΊ! Π’Ρ‹ Π΄Π²ΠΎΠ΅ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚Π΅, Π° API просто ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΉ!

Π― ΠΏΡ€ΠΎΠΉΠ΄Ρƒ Ρ‡Π΅Ρ€Π΅Π· это ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ воспроизвСсти. Но Π΅ΡΡ‚ΡŒ Π»ΠΈ способ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ? Π― имСю Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ послСдний ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° я ΡƒΠ·Π½Π°ΡŽ имя ΠΏΠ°ΠΏΠΊΠΈ. Если я Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽ процСсс ΠΈ создаСтся новая ΠΏΠ°ΠΏΠΊΠ°, Π° Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ, это Π½Π΅ сработаСт для Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ, Π²Π΅Ρ€Π½ΠΎ? Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π° всякий случай ΠΌΠ½Π΅ понадобилась ΠΏΠ°ΠΏΠΊΠ° с листингом. Π’ любом случаС настоящСС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для ΠΌΠΎΠ΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π²Π°ΠΌ ΠΎΠ±ΠΎΠΈΠΌ. Π― обновлю здСсь, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρƒ экспСримСнт.

НС Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚Π΅ мСня, Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚ @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"]))

ΠΌ.

Ѐантастика. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ содСрТимого ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ!

Бпасибо,

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ PDF. ОНИ пустыС - 156 Π±Π°ΠΉΡ‚. Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ?

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ PDF с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° всСго 1 ΠšΠ‘, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π›ΡŽΠ±Π°Ρ идСя?

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ PDF с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° всСго 1 ΠšΠ‘, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄. Π›ΡŽΠ±Π°Ρ идСя?

Π― понял это, для мСня ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π±Ρ‹Π» ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ URL-адрСс. Когда ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ, ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ / sites / sitename / library ΠΈ Ρ‚. Π”., Π­Ρ‚ΠΎ просто Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ / library. Но ΠΊΠΎΠ³Π΄Π° я ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽ Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ / sites / sitename / folder / file.

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ странно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я всС Π΅Ρ‰Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡ… Π±Π΅Π· добавлСния / sites / sitename /, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΎ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ссли я добавляю / sites / sitename / ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ содСрТимого ΠΏΠ°ΠΏΠΊΠΈ, ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли я Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ URL-адрСс с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ.

Π‘Ρ‚Ρ€Π°Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСсурс ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ / sites / sitename ΠΊ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ URL-адрСсу ΠΊΠ°ΠΊ для содСрТимого ΠΏΠ°ΠΏΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ для содСрТимого Ρ„Π°ΠΉΠ»Π°.

Бпасибо Π·Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС содСрТимоС ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ / sites / sitename / Documents / somefolder, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄?

Бпасибо рСбята. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ мноТСство ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ использовании ΠΏΠ°ΠΊΠ΅Ρ‚Π° Sharepoint.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ