首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中从dbf中编写dbf片

在python中从dbf中编写dbf片
EN

Stack Overflow用户
提问于 2018-04-11 14:51:26
回答 3查看 1.3K关注 0票数 1

我想使用DBF模块根据dist列中的值来拆分vfp。因此,我提取了所有必要的指数,用于出口。不幸的是,原始表不允许索引列表。

代码语言:javascript
复制
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的行?

EN

回答 3

Stack Overflow用户

发布于 2018-04-11 15:35:47

我将尝试如下(未经测试):

代码语言:javascript
复制
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()

然后把它叫做:

代码语言:javascript
复制
copy_range('refrence.dbf', 'result.dbf', 'dist', 100, 200)
票数 1
EN

Stack Overflow用户

发布于 2018-04-11 17:13:30

选择记录可以通过以下方式完成:

代码语言:javascript
复制
target_records = [rec for rec in table if start <= rec.dist <= end]

一旦有了这些记录,就很容易将它们复制到一个新的dbf中:

代码语言:javascript
复制
new_table = old_table.new('some_file.dbf')
with new_table:
    for record in target_records:
        new_table.append(record)
票数 1
EN

Stack Overflow用户

发布于 2018-04-13 18:50:09

您可以像这样访问已过滤的表

代码语言:javascript
复制
table[l]["dist"]

代码语言:javascript
复制
table[l][fieldName]

代码语言:javascript
复制
table[l][0]

您应该使用这些过滤过的数据生成dbf文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49778278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档