I am trying to list files from a folder. It works with folder name with spaces but doesn't work when folder name contains '#'.
I am getting below error office365.runtime.client_request_exception.ClientRequestException: ('-1234456, System.IO.FileNotFoundException', 'File Not Found.', "404 Client Error)
from office365.sharepoint.files.file import File
from office365.sharepoint.folders.folder import Folder
from office365.runtime.auth.client_credential import ClientCredential
app_principal = {
'id': 'xxxxxxxx',
'secret_id': 'xxxxxxxx',
}
baseurl = 'xxxx.sharepoint.com'
basesite = '/xxx/xxx'
siteurl = baseurl + basesite
credentials = ClientCredential(app_principal['id'], app_principal['secret_id'])
ctx = ClientContext(siteurl).with_credentials(credentials)
def enum_folder(parent_folder, fn):
"""
:type parent_folder: Folder
:type fn: (File)-> None
"""
parent_folder.expand(["Files", "Folders"]).get().execute_query()
for file in parent_folder.files: # type: File
fn(file)
for folder in parent_folder.folders: # type: Folder
enum_folder(folder, fn)
def print_file(f):
print(f.properties['ServerRelativeUrl'])
target_folder_url = "Documents/Configs files/testfolder#123"
root_folder = ctx.web.get_folder_by_server_relative_url(target_folder_url)
enum_folder(root_folder, print_file)
I didnt user credentials when using app principal try this: