I am trying to create a script tool to use in a model. The purpose of the script tool is to take files that have been exported to a folder and zip them into a different folder. I am getting an error:
Traceback (most recent call last):
File "C:\Scratch_Catalog\ZipFile_Export.py", line 33, in <module>
zip_folder(input_folder, output_zip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Scratch_Catalog\ZipFile_Export.py", line 15, in zip_folder
with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\zipfile\__init__.py", line 1367, in __init__
self.fp = io.open(file, filemode)
~~~~~~~^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'C:\\Scratch_Catalog\\ZipTest'
I know that is a lot but even after research I am not understanding the error. Here is the attempted code
def zip_folder(input_folder, output_zip):
"""Compresses the contents of a folder into a ZIP file."""
if not os.path.exists(input_folder):
arcpy.AddError(f"Input folder does not exist: {input_folder}")
sys.exit(1)
# Ensure output directory exists
os.makedirs(os.path.dirname(output_zip), exist_ok=True)
with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(input_folder):
for file in files:
file_path = os.path.join(root, file)
arcname = os.path.relpath(file_path, input_folder)
zipf.write(file_path, arcname)
arcpy.AddMessage(f"Created ZIP file: {output_zip}")
"""Clear all cached workspaces"""
arcpy.management.ClearWorkspaceCache()
if __name__ == "__main__":
# Script tool parameters
input_folder = arcpy.GetParameterAsText(0) # Input folder
output_zip = arcpy.GetParameterAsText(1) # Output ZIP file path
zip_folder(input_folder, output_zip)
Any help is greatly appreciated.