问题遇到的现象和发生背景
python dbfread读取DBF数据,通过records读取未标记删除数据,deleted读取标记删除的数据。
那该如何获取各个数据在DBF中的行号呢?
用代码块功能插入代码,请勿粘贴截图
table = dbfread.DBF('C:\\xxxx.dbf', encoding='GBK', char_decode_errors='ignore', load=True)
print(table.records)
print(table.deleted)
我想要达到的结果
想要达到的效果,直接按行获取数据,不论数据是否被标记删除。
问题解决方案
引用文章: https://blog.csdn.net/jhui123456/article/details/108046201
直接使用dbf库操作dbf文件,直接读取所有行数据,可以根据dbf.is_deleted(record)查看当前行是否标记删除
import dbf
dfb_file = 'C:\\\\xxx.dbf'
file = dfb_file
tb = dbf.Table(dfb_file) # 创建tb实例
# print(tb) # 打印tb信息
titles = dbf.get_fields(file) # 将表头以列表形式打印出来
print(titles)
tb.open(mode=dbf.READ_WRITE) # 读写方式打开tb print('title_name=', title_name)
for record in tb:
value_list = []
deleted_status = dbf.is_deleted(record) # 查看当前行是否标记删除
print('deleted_status=', deleted_status)
with record as r:
for field in record:
value_list.append(field)
print('value_list=', value_list)