如何在Python中修改dbf文件

问题描述 投票:0回答:3

假设我根目录下的某些文件夹中有不同数量的dbf文件,

d:\myfolder
。 dbf 文件的内容如下所示:

Field1 
11110481123
12150480021
...

我想添加一个仅包含

Field1
中值的最后 4 位数字的字段(例如,
Field2
)。

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

然后我想删除

Field1

如何处理 Python 中分散在不同文件夹中的所有 dbf 文件?

python dbf
3个回答
4
投票

您需要通过 pypi (

dbf
) 提供名为
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 位数字,计算强度会较小。


1
投票

使用上述 dbf 库(加上我的其他库,antipathy),这些是(大致)您将采取的步骤:

# 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()
功能。如果您想全部更改,可以删除该行。


0
投票

要修改 [Python 中的 DBF (dBASE) 文件,]1,您可以使用 dbf 库,它提供了处理 DBF 文件的功能。以下是有关如何安装库并对 DBF 文件执行基本操作的简单指南:

安装dbf库: 巴什 复制代码 pip安装dbfpy 修改 DBF 文件的示例: Python 复制代码 从 dbfpy 导入 dbf

加载现有的 DBF 文件

db = dbf.Dbf("示例.dbf")

显示字段名称

print("字段名称:", db.fieldNames)

显示记录数

print("记录数:", len(db))

遍历记录并修改字段值

用于数据库中的记录: # 假设'age'是DBF文件中的一个字段 记录[“年龄”] = 记录[“年龄”] + 1

保存更改

db.flush()

关闭 DBF 文件

db.close() 在这个例子中:

我们使用 dbf.Dbf() 构造函数打开一个名为“example.dbf”的现有 DBF 文件。 我们使用 db.fieldNames 打印字段名称,并使用 len(db) 打印记录数。 我们迭代 DBF 文件中的每条记录,假设有一个名为“age”的字段,并将其值加 1。 使用 db.flush() 保存更改,并使用 db.close() 关闭文件。 补充笔记: 确保将“example.dbf”替换为 DBF 文件的实际名称。 调整字段名称(在本例中为“年龄”)以匹配您要修改的字段。 修改 DBF 文件时要小心,因为更改可能会影响依赖原始结构的应用程序。 请记住,dbf 库只是在 Python 中处理 DBF 文件的几个选项之一。根据您的具体需求,如果您的应用程序涉及复杂的数据操作,您可能需要探索其他库或使用更全面的数据库解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.