squeaky-pl / japronto

Screaming-fast Python 3.5+ HTTP toolkit integrated with pipelining HTTP server based on uvloop and picohttpparser.
MIT License
8.62k stars 580 forks source link

Please help with Script #188

Open Bra3108 opened 1 year ago

Bra3108 commented 1 year ago

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