Saltar al contenido

¿Hay un módulo Python 3 para leer archivos .dbf escritos por ArcGIS for Desktop?

Esta duda se puede resolver de diferentes formas, pero te enseñamos la que en nuestra opinión es la solución más completa.

Solución:

Como todos los programadores de Python, voy a

  • primero vea el índice del paquete Python para archivos dbf (se especifica si no son compatibles con Python 3 o Python 2). dbfread, por ejemplo, funciona con Python 2.x y Python 3.x.
  • Se pueden usar módulos geoespaciales como GDAL/OGR, pero es necesario compilarlos (Linux, Mac OS X). Para los usuarios de Windows, Christoph Gohlke proporciona los binarios no oficiales de Windows para los paquetes de extensión de Python con GDAL/OGR (Python 2.x y Python 3.x)
  • y un módulo geoespacial de Python puro como Pyshp (Python 2.x o 3.x) también puede leer archivos dbf
  • y por último, si conoces la estructura de un archivo dbf (Data File Header Structure for the dBASE Version 7 Table File, por ejemplo), no es complicado programar un lector en Python puro con el módulo struct

Adapté esta función para python 2,7 a python 3,x, funciona para mí, pero no hay garantía … 🙂

def dbfreader(f): #Found on http://code.activestate.com/recipes/362715-dbf-
reader-and-writer/ - by Raymond Hettinger
"""Returns an iterator over records in a Xbase DBF file.

The first row returned contains the field names.
The second row contains field specs: (type, size, decimal places).
Subsequent rows contain the data records.
If a record is marked as deleted, it is skipped.

File should be opened for binary reads.
Adapted for python 3,5 20-09-2017
"""
# See DBF format spec at:
#     http://www.pgts.com.au/download/public/xbase.htm#DBF_STRUCT

numrec, lenheader = struct.unpack('

Comentarios y calificaciones

Tienes la posibilidad mostrar este tutorial si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *