#.DBF文件操作
DBF文件生成
from os import path
import dbf
import dbfread
def new_dbf(src_file, des_file):
src = src_file
des = des_file
src_table = dbfread.DBF(src, encoding='GBK')
res = []
for field in src_table.fields:
if field.type == 'N':
cur = field.name + ' ' + field.type + '(' + str(field.length) + ',' + str(field.decimal_count) + ')'
else:
cur = field.name + ' ' + field.type + '(' + str(field.length) + ')'
res.append(cur)
res_str = ';'.join(res)
print(res_str)
table = dbf.Table(
filename='test',
field_specs=res_str,
on_disk=False,
)
table.open(mode=dbf.READ_WRITE)
for record in src_table:
if record['YWLB'] == 'Q101' or record['YWLB'] == 'Q104':
table.append(record)
custom = table.new(
filename=des,
default_data_types=dict(C=dbf.Char, D=dbf.Date, L=dbf.Logical),
)
with custom:
for record in table:
custom.append(record)
table.close()
src_file = r'src_file .dbf'
des_file = r'des_file .dbf'
new_dbf(src_file, des_file)
原有DBF文件中新建和增加数据
import dbf
import dbfread
src = r'src.dbf'
des = r'des.dbf'
src_table = dbfread.DBF(src, encoding='GBK')
res = []
table = dbf.Table(filename=des)
table.open(mode=dbf.READ_WRITE)
for record in src_table:
for i in range(7):
table.append(record)
break
table.close()