importargparseimportosimporttempfilefromoffice365.sharepoint.client_contextimportClientContextfromtests.settingsimportclient_id,password,team_site_url,tenant,usernamedefmain():parser=argparse.ArgumentParser(description="Download list item attachments")parser.add_argument("--list-title",default="Company Tasks",help="list title")args=parser.parse_args()ctx=ClientContext(team_site_url).with_username_and_password(tenant=tenant,client_id=client_id,username=username,password=password)source_list=ctx.web.lists.get_by_title(args.list_title)download_path=tempfile.mkdtemp()items=source_list.items.get().execute_query()foriteminitems:attachment_files=item.attachment_files.get().execute_query()forattachment_fileinattachment_files:file_name=attachment_file.file_nameor"attachment.bin"download_file_name=os.path.join(download_path,os.path.basename(file_name))withopen(download_file_name,"wb")asfh:attachment_file.download(fh).execute_query()print(f"{attachment_file.server_relative_url} has been downloaded into {download_file_name}")if__name__=="__main__":main()