Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从dbf写入dbf切片_Python_Database_Foxpro_Dbf - Fatal编程技术网

在python中从dbf写入dbf切片

在python中从dbf写入dbf切片,python,database,foxpro,dbf,Python,Database,Foxpro,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中的值拆分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)
input_file='reference.dbf'
table=dbf.table(输入文件)
l=[]
对于ind,在枚举中记录(table.open(mode=dbf.READ_WRITE)):
记录为r:

如果r.dist>=start和r.dist=start和r.dist我会尝试以下方法(未测试):


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

target_records = [rec for rec in table if start <= rec.dist <= end]

您可以像这样访问已筛选的表

table[l]["dist"]


您应该使用这些过滤后的数据创建dbf文件。

对于您得到的解决方案,您发现了什么困难?我遇到了以下错误:
TypeError:type对索引无效
当尝试访问
表[l]
时,我也不知道如何将
表[l]
导出到另一个vfp dbf。文档非常基础。感谢您的快速回答。我认为您必须在for循环中将
table
更改为
src
。因为代码中没有
。我还得到了以下错误:
ValueError:invalid literal for int(),以10为基数:“inar”
,我认为这与dbf中的数据有关。是否有一个选项允许在同一个dbf中使用字符串和双精度键?我在问题的另一个答案中发布了一个回溯。这与我从执行您的代码中得到的几乎相同。嗯,@F.Motz,Ethan Furman是dbf模块的作者,所以请听这个人说:-)谢谢你的回复。我尝试了您的代码,但出现以下错误:
ValueError:int()的文本无效,以10为基数:“inar”
,我认为这与dbf中的数据有关。是否有一个选项允许字符串和double在同一个dbf中?(与上述注释相同)
[…]文件“xxx\dbf\ver\u 2.py”,第5404行,在新的返回表中(文件名、字段规格、备忘录大小、忽略备忘录、代码页、默认数据类型、字段数据类型、dbf\u类型=self.\u versionabbr,在磁盘上=在磁盘上)文件“xxx\dbf\ver\u 2.py”,第4785行,在文件“xxx\dbf\init\uuuu\self.add\u字段(字段规格)中,第5057行,在add_fields length,decimals,flags=init(片断,flags)文件“xxx\dbf\ver_2.py”中,第3898行,在add_vfp_double decimals=int(格式[0][1:-1])中,如果len else 0(格式)ValueError:int()的文本无效使用base 10:'inar'
@F.Motz:尝试安装最新版本的
dbf
pip安装dbf--升级
;我不认为这会有什么帮助,但是有最新的版本很好。看起来您的dbf可能已损坏。请随时给我发电子邮件,我可以看一下。我更新了我的dbf模块,但得到了相同的错误。发送电子邮件至ethanf@admailinc.com还有一个错误:)你当前的邮件地址是什么?@F.Motz:它在dbf文件夹中
\uuuu init\uuuuuuy.py
文件的顶部(对不起,我收到的垃圾邮件已经够多了)。
target_records = [rec for rec in table if start <= rec.dist <= end]
new_table = old_table.new('some_file.dbf')
with new_table:
    for record in target_records:
        new_table.append(record)
table[l]["dist"]
table[l][fieldName]
table[l][0]