-->

如何修改在Python DBF文件(How to modify dbf files in Pytho

2019-06-24 05:10发布

假设我有在根目录下的一些文件夹不同数量的DBF文件, d:\myfolder 。 一个DBF文件的内容如下所示:

Field1 
11110481123
12150480021
...

我想添加一个字段(比如, Field1只包含最后4个位数的数值) Field2

Field1          Field2
11110481123     1123
12150480021     0021
...             ...

然后,我想删除Field1

我该怎么办对于所有这些分散在不同的文件夹中的Python DBF文件的工作?

Answer 1:

您需要调用模块dbf通过PyPI将可用( pip install dbf )。 这里是你如何可以添加和删除从表中的字段的一个片段:

import dbf

table = dbf.Table('t1', 'field1 N(12, 0)')
for record in ((11110481123,), (12150480021,)):
    table.append(record)
table.close()

# extend the existing table
dbf.add_fields('t1', 'field2 N(4, 0)')

table = dbf.Table('t1')
records = table.sql('select *')
for record in records:
    record.field2 = int(str(record.field1)[-4:])
table.close()

dbf.delete_fields('t1', 'field1')

虽然这将是更少的计算密集的只是去在第一场和改变它来存储最后4位数字的值。



Answer 2:

使用上述DBF库 (加上我的其他图书馆, 反感 ),这些都是( 大致 )你会采取的步骤:

# untested

import dbf
from antipathy import Path

for path, dirs, files in Path.walk('.'):
    files = [f for f in files if f.ext == '.dbf']
    for db in files:
        if I_want_to_change_this_table(db):
            with dbf.Table(db) as db:
                db.add_fields('Field2 C(4)')
                for record in db:
                    dbf.write(Field2=record.Field1[-4:])
                db.delete_fields('Field1')
                db.pack()

I_want_to_change_this_table()是,如果你不想改变每个表你提供一个功能,只是其中的一部分。 如果你想改变所有这些,你可以删除了这一行。



文章来源: How to modify dbf files in Python
标签: python dbf