Skip to content

Please help with Script #188

@Bra3108

Description

@Bra3108

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions