假设我有在根目录下的一些文件夹不同数量的DBF文件, d:\myfolder
。 一个DBF文件的内容如下所示:
Field1
11110481123
12150480021
...
我想添加一个字段(比如, Field1
只包含最后4个位数的数值) Field2
。
Field1 Field2
11110481123 1123
12150480021 0021
... ...
然后,我想删除Field1
。
我该怎么办对于所有这些分散在不同的文件夹中的Python DBF文件的工作?
您需要调用模块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位数字的值。
使用上述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()
是,如果你不想改变每个表你提供一个功能,只是其中的一部分。 如果你想改变所有这些,你可以删除了这一行。