Please help with Script
Bra3108 opened this issue · 0 comments
import os
import zipfile
import shapefile
Ruta del archivo .zip
ruta_zip = ''
Ruta de extracción del archivo .zip
ruta_extraccion = ''
Descomprimir el archivo .zip
with zipfile.ZipFile(ruta_zip, 'r') as zip_ref:
zip_ref.extractall(ruta_extraccion)
Obtener el nombre del archivo .zip sin la extensión
nombre_zip = os.path.splitext(os.path.basename(ruta_zip))[0]
Ruta del archivo .shp
ruta_shp = os.path.join(ruta_extraccion, nombre_zip + '.shp')
Agregar un campo de texto llamado "plano" con el nombre del archivo .zip
sf = shapefile.Reader(ruta_shp)
fields = sf.fields
records = sf.records()
shapes = sf.shapes()
Agregar el campo plano al registro
fields.append(['plano', 'C', 50, 0]) # Nombre del campo, tipo de campo, longitud y decimal
Crear una nueva instancia de escritura para el archivo modificado
w = shapefile.Writer(ruta_shp, shapeType=sf.shapeType)
w.fields = fields
Escribir los registros y formas en el nuevo archivo
for i in range(len(records)):
nuevo_registro = list(records[i]) + [nombre_zip]
w.record(*nuevo_registro)
w.shape(shapes[i])
Guardar el archivo .shp modificado
ruta_shp_modificado = os.path.join(ruta_extraccion, nombre_zip + '_modificado.shp')
w.close(ruta_shp_modificado)
Comprimir el archivo .shp modificado en un nuevo archivo .zip
ruta_zip_modificado = os.path.join(os.path.dirname(ruta_zip), nombre_zip + '_modificado.zip')
with zipfile.ZipFile(ruta_zip_modificado, 'w') as zip_ref:
# Agregar el archivo .shp modificado
zip_ref.write(ruta_shp_modificado, os.path.basename(ruta_shp_modificado))
# Agregar los archivos adicionales al archivo .zip (si los hay)
for root, dirs, files in os.walk(ruta_extraccion):
for file in files:
if file != os.path.basename(ruta_shp):
archivo_completo = os.path.join(root, file)
archivo_relativo = os.path.relpath(archivo_completo, ruta_extraccion)
zip_ref.write(archivo_completo, archivo_relativo)
Reemplazar el archivo original con el archivo .zip modificado
os.remove(ruta_zip)
os.rename(ruta_zip_modificado, ruta_zip)
Eliminar el archivo .shp y los archivos temporales (opcional)
os.remove(ruta_shp_modificado)
os.remove(ruta_zip_modificado)
print("Proceso completado.")
I get the error Traceback (most recent call last):
File "D:/users/bramirez/Desktop/Scrips_ArcGisPro_Geo - copia/1.py", line 42, in
w.close(ruta_shp_modificado)
TypeError: close() takes 1 positional argument but 2 were given
Please help