Quelle est la manière la plus simple de lire un fichier FoxPro DBF à partir de Python ?

StackOverflow https://stackoverflow.com/questions/37535

Question

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'aurais de préférence également accès aux champs mémo.

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

Était-ce utile?

La solution

Tu peux essayer ça recette sur l'état actif.

Il y a aussi Module DBFReader que vous pouvez essayer.

Pour un soutien à champs mémo.

Autres conseils

je préfère dbfpy.Il prend en charge à la fois la lecture et l'écriture de .DBF fichiers et peut gérer la plupart des variantes du format.C'est la seule implémentation que j'ai trouvée capable à la fois de lire et d'écrire les fichiers DBF hérités de certains systèmes plus anciens avec lesquels j'ai travaillé.

Si vous vérifiez toujours cela, j'ai un convertisseur GPL FoxPro vers PostgreSQL sur https://github.com/kstrauser/pgdbf .Nous l'utilisons pour copier régulièrement nos tables dans PostgreSQL pour un reporting rapide.

J'ai pu lire un fichier DBF (avec les fichiers BAK, CDX, FBT, TBK** associés) en utilisant le package dbf de PyPI http://pypi.python.org/pypi/dbf .Je suis nouveau sur Python et je ne connais rien aux fichiers DBF, mais cela a fonctionné facilement pour lire un fichier DBF de l'entreprise de ma petite amie (créé avec une application POS de magasin de musique appelée AIMsi).

Après avoir installé le package dbf (j'ai utilisé aptitude et installé la version 0.88 de dbf je pense), le code python suivant a fonctionné :

from dbf import *
test = Table("testfile.dbf")
for record in test:
    print record
    x = raw_input("")  # to pause between showing records

C'est tout ce que je sais pour l'instant, mais j'espère que c'est un début utile pour quelqu'un d'autre qui trouve cette question !

21 avril 2012 SJK Edit :D'après le commentaire d'Ethan Furman, je dois souligner qu'en fait, je ne sais pas lequel Des fichiers de données étaient nécessaires, en plus du fichier DBF.La première fois que j'ai exécuté le script, avec uniquement le DBF disponible, il s'est plaint d'un fichier de support manquant.Donc, j'ai juste copié les fichiers BAK, CDX, FPT (pas FBT comme je l'ai dit avant l'édition), TBK et puis cela a fonctionné.

Vérifier http://groups.google.com/group/python-dbase

Il prend actuellement en charge les fichiers dB dBase III et Visual Foxpro 6.0...Je ne sais pas si la disposition des fichiers change dans VFP 9 ou non...

Nous sommes en 2016 maintenant et j'ai dû manipuler le package dbf pour le faire fonctionner.Voici une version python3 pour simplement 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 Unicode au début, mais j'ai contourné ce problème 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top