跳转到主要内容

DBF/XBase文件的Pythonic读取器和写入器

项目描述

YDbf

YDbf - 以Pythonic方式读取和写入DBF/XBase文件。该库是用纯Python编写的,没有外部依赖。

YDbf与Python 2.7+和3.5+兼容。

YDbf的优势

  • 导出数据到DBF文件
  • 从DBF文件导入数据
  • 以流的形式从DBF文件读取数据

YDbf不适用的情况

  • 对DBF文件中记录的随机访问
  • 备忘字段

读取DBF

YDbf的入口点是open函数

dbf = ydbf.open('simple.dbf')

您可以使用文件名,或者已经以二进制模式打开的文件

fh = open('simple.dbf', 'rb')
dbf = ydbf.open(fh)

for record in dbf:
    ...

您还可以使用with语句

with ydbf.open('simple.dbf') as dbf:
    for record in dbf:
        ...

每条记录都是一个字典,其键是字段名。

写入DBF

YDbf默认以读取模式打开文件,但您可以将选项mode设置为写入模式

dbf = ydbf.open('simple.dbf', 'w', fields)

或自己打开文件

fh = open('simple.dbf', 'wb')
dbf = ydbf.open(fh, 'w', fields)

fields是DBF文件的结构描述,它是写入模式所需的选项。结构是字段描述的序列,其中每个字段由元组(NAME, TYPE, SIZE, DECIMAL)描述。NAME是字段名,TYPE是DBF字段的类型('N'表示数字,'C'表示字符,'D'表示日期,'L'表示逻辑),DECIMAL是精度(仅对'N'类型有用)。例如

fields = [
    ('ID',      'N',  4, 0),
    ('VALUE',   'C', 40, 0),
    ('UPDATE',  'D', 8, 0),
    ('VISIBLE', 'L', 1, 0),
]

YDbf默认使用Unicode为'C'字段,因此您可能需要定义用于DBF文件的编码。UTF-8不受支持,您只能使用8位编码。

dbf = ydbf.open('simple.dbf', 'w', fields, encoding='cp1251')
dbf.write(data)

YDbf将data作为迭代器获取,其中每个项都是一个字典,其键是字段名。例如

data = [
    {'ID': 1, 'VALUE': 'ydbf', 'VISIBLE': True,
     'UPDATE': datetime.date(2009, 7, 14)},
    {'ID': 2, 'VALUE': 'ydbf-dev', 'VISIBLE': False,
     'UPDATE': datetime.date(2009, 5, 15)},
    {'ID': 3, 'VALUE': 'pytils', 'VISIBLE': True,
     'UPDATE': datetime.date(2009, 5, 11)},
]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

YDbf-0.4.1.tar.gz (24.7 kB 查看哈希)

上传时间

支持