24 votes

Quel est le moyen le plus simple de lire un fichier FoxPro DBF depuis Python ?

J'ai un tas de fichiers DBF FoxPro (VFP9) sur mon système Ubuntu, existe-t-il une bibliothèque pour les ouvrir en Python ? J'ai seulement besoin de les lire, et j'aimerais de préférence avoir accès aux champs mémo aussi.

Mise à jour : Merci @cnu, j'ai utilisé celui de Yusdi Santoso. dbf.py et ça marche bien. Un seul problème : l'extension du nom du fichier memo doit être en minuscules, c'est-à-dire .fpt pas .FPT c'est ainsi que le nom du fichier est venu de Windows.

5voto

Shawn Points 222

On est en 2016 maintenant et j'ai dû bidouiller le paquet dbf pour que ça marche. Voici une version python3 pour exporter un fichier dbf vers un csv.

import dbf

d=dbf.Table('mydbf.dbf')
d.open()
dbf.export(d, filename='mydf_exported.csv', format='csv', header=True)

J'ai eu une erreur d'unicode au début, mais je l'ai contournée en désactivant les mémos.

import dbf

d=dbf.Table('mydbf.dbf', ignore_memos=True)
d.open()
dbf.export(d, filename='mydf_exported.csv', format='csv', header=True)

-1voto

Miguel FARIAS Points 1

Les indices CDX ont été incorporés dans FoxPro pour DOS en 1992.

Si la bibliothèque supporte VFP 6, elle doit supporter ces indices (au moins s'il s'agit d'une implémentation complète).

Dans VFP 8, des champs permettant d'incrémenter automatiquement les clés primaires ont été ajoutés.

Dans VFP 9, un certain nombre de nouveaux types de données sont ajoutés, qui ne sont pas couramment utilisés.

Dans VFP (3 et plus) ont été ajoutés des données binaires entières, la structure des pointeurs vers les champs de type memo (very long text, MySQL = TEXT) va changer les champs de date (heure et date) qui occupent 8 octets sont ajoutés de stockage ainsi que la date de dBASE III.

Dans les dernières versions de VFP, les indices binaires, qui se trouvent dans le même fichier, les indices CDX ont été ajoutés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X