从Python读取FoxPro DBF文件最简单的方法是什么?

时间:2008-09-01 06:45:40

标签: python foxpro dbf visual-foxpro

我的Ubuntu系统上有一堆FoxPro(VFP9)DBF文件,是否有用Python打开这些文件的库?我只需要阅读它们,最好也可以访问备忘录字段。

更新:谢谢@cnu,我使用了Yusdi Santoso的dbf.py,效果很好。一个问题:备忘录文件扩展名必须是小写,即.fpt,而不是.FPT,这就是文件名从Windows中传来的。

6 个答案:

答案 0 :(得分:16)

我更喜欢dbfpy。它支持读取和写入.DBF文件,并且可以处理格式的大多数变体。这是我发现的唯一一个可以读取和写入我曾经使用过的旧系统的遗留DBF文件的实现。

答案 1 :(得分:9)

如果你还在检查这个,我在https://github.com/kstrauser/pgdbf有一个GPL FoxPro-to-PostgreSQL转换器。我们使用它来定期将表格复制到PostgreSQL中以便快速报告。

答案 2 :(得分:9)

我能够使用PyPI http://pypi.python.org/pypi/dbf中的dbf包读取DBF文件(带有关联的BAK,CDX,FBT,TBK文件**)。我是python的新手,对DBF文件一无所知,但它很容易从我女朋友的业务中读取一个DBF文件(用一个名为AIMsi的音乐商店POS应用程序创建)。

安装dbf软件包后(我使用aptitude并安装了dbf版本0.88),以下python代码工作正常:

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

这就是我现在所知道的,但希望对于发现这个问题的其他人来说这是一个有用的开始!

  

2012年4月21日SJK编辑:Per Ethan Furman的评论,我应该指出,除了DBF文件之外,我实际上不知道哪些数据文件是必要的。我第一次运行脚本,只有DBF可用,它抱怨缺少支持文件。所以,我只是复制了BAK,CDX,FPT(不是我在编辑之前说过的FBT),TBK文件然后就可以了。

答案 3 :(得分:7)

您可以试试recipe on Active State

您还可以尝试DBFReader module

支持memo fields

答案 4 :(得分:5)

查看http://groups.google.com/group/python-dbase

它目前支持dBase III和Visual Foxpro 6.0 db文件...不确定VFP 9中的文件布局是否发生变化......

答案 5 :(得分:4)

现在是2016年,我不得不使用dbf软件包来实现它。这是一个python3版本,只是将dbf文件导出到csv

import dbf

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

我最初有一些unicode错误,但是通过关闭备忘录来解决这个问题。

import dbf

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