我想使用DBF模块根据列中的值 dist 拆分vfp dbf。因此,我提取了所有必要的索引,以便将它们用于导出。不幸的是,原始表不允许索引列表。
input_file = 'refrence.dbf'
table = dbf.Table(input_file)
l = []
for ind, record in enumerate(table.open(mode=dbf.READ_WRITE)):
with record as r:
if r.dist >= start and r.dist <= end:
l.append(ind)
是否有更简单的方法来获取 n 单独的dbf文件,这些文件只包含满足 r.dist >= start and r.dist <= end
条件的行?
答案 0 :(得分:1)
选择记录可以通过以下方式完成:
target_records = [rec for rec in table if start <= rec.dist <= end]
获得记录后,将它们复制到新的dbf中相当容易:
new_table = old_table.new('some_file.dbf')
with new_table:
for record in target_records:
new_table.append(record)
答案 1 :(得分:0)
我会尝试类似以下内容(未经测试):
def copy_range(source, destination, field_name, start, end):
src = dbf.Table(source).open()
dst = src.new(destination).open(dbf.READ_WRITE) # copy structure
for record in src:
if start <= record[field_name] <= end:
dst.append(record)
src.close()
dst.close()
然后称之为:
copy_range('refrence.dbf', 'result.dbf', 'dist', 100, 200)
答案 2 :(得分:0)
您可以像这样访问过滤表
table[l]["dist"]
或
table[l][fieldName]
或
table[l][0]
您应该使用此筛选数据制作dbf文件。