I’m successfully able to download CSV files from a folder on Exavault, using the files provided by Exavault, but the download gets saved in a temporary folder on my Mac.
How do I define the directory to save it to? This is an excerpt of the script.
resources_api = ResourcesApi() resources_api.api_client.configuration.host = ACCOUNT_URL try: list_result = resources_api.list_resources( API_KEY, ACCESS_TOKEN, "/files", offset=0, type='file', name='*.csv') if list_result.returned_results == 0: print("Found no files to download") sys.exit(0) else: print("Found {} CSV files to download".format(list_result.returned_results)) except Exception as e: raise e print('Exception when calling Api:', str(e)) sys.exit(1) downloads = [] listed_files = list_result.data for listed_file in listed_files: downloads.append("id:{}".format(listed_file.id)) print(listed_file.attributes.path) try: downloaded_file = resources_api.download(API_KEY, ACCESS_TOKEN, downloads, download_archive_name="sample-csvs") print("File(s) downloaded to", os.path(downloaded_file))
Separately there’s a resources_api.py file, which might hold the answer, but if I edit that, I’m not sure how I would invoke the changes.
Any help would be appreciated.
Advertisement
Answer
When looking at the code of the API, you can see that it is written such that it always creates a temporary folder for you:
# Write the file to the temporary folder configured for our client fd, path = tempfile.mkstemp(dir=self.api_client.configuration.temp_folder_path)
You could check if you can try to change api_client.configuration.temp_folder_path
and see if that works for you.
Or even better, just copy the file to a location of your choice. You can do it with shutil
import shutil import os targetFolder= "/your/folder/" filename = os.path.basename(downloaded_file) destination = os.path.join(targetFolder,filename ) shutil.copy(downloaded_file, destination)