python dbfread如何按行读取DBF(包括标记删除的行)

问题遇到的现象和发生背景

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)
我想要达到的结果

img


想要达到的效果,直接按行获取数据,不论数据是否被标记删除。

问题解决方案

引用文章: 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)

print(table.records)
就是一个保存了所有行信息的迭代器,如果要序列号那就按顺序取就好了,方法如下:

for line_num, data in enumerate(table.records):
    print(line_num)

import sys
 
def line_file_test():
    print(sys._getframe().f_lineno)     # 获取当前行号(行数)
 
 
line_file_test()

【python 如何获取指定行的行号】【仅供参考】

我可以教你如何读取