squeaky-pl/japronto

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