使用 Python 在 DBF 字段中添加值

Adding Values inside DBF field using Python

我想创建一个 dbf 文件,然后使用 python 向其中添加字段和值。我可以创建 dbf 文件和字段,但不知道如何将值直接添加到相应的字段中。我有一个巨大的数据集来执行此操作,这就是我使用循环的原因。这只是数据的示例。使用此代码,将创建 dbf 并添加字段,但不会添加这些字段中的值。 任何帮助将不胜感激。

import dbf
dctClmVal ={'a':'19', 'b':'76', 'c':'59', 'd':}    
lstFields = ['a','b','c','d']
out_dbf_Path= r"C:\Users\ms\Stats\new.dbf"

db=dbf.Table(out_dbf_Path)
db.open(mode= dbf.READ_WRITE)
for clm in lstFields:
    db.add_fields( clm + " C(50)")

for field in lstFields:
    if(field.upper() in db.field_names):
        db.append({'field=dctClmVal[field]'})
db.close()

稍微清理一下代码后,您需要的是这样的东西:

import dbf

records = ({'a':'19', 'b':'76', 'c':'59', }, )

lstFields = ['a C(50)','b C(50)','c C(50)','d C(50)']
out_dbf_Path= "new.dbf"

db = dbf.Table(out_dbf_Path, lstFields)
db.open(mode=dbf.READ_WRITE)

for dctClmVal in records:
    db.append(dctClmVal)

db.close()

并阅读您写的内容:

>>> with db:
...   print db[0]
... 

  0 - a         : u'19                                                '
  1 - b         : u'76                                                '
  2 - c         : u'59                                                '
  3 - d         : u'                                                  '

来自评论:

if my dictionary has values in list format corresponding to each key, Example:

records = {
        'a': ['2','4','6'],
        'b': ['3','5','7'],
        'c': ['8','9','0'],
        }

How can I update my db?

与将单个记录的字段分布在不同的列表中相比,这种存储记录的方法要好得多。如果一个列表损坏,它可能会影响每一行。

注意:我从 records 中删除了 (),因为它们什么也没做。

#
# combine into individual records
#
real_records = []
for field, values in records.items():
    for i, value in enumerate(values):
        if len(real_records) == i:
            real_records.append({})
        real_records[i][field] = value
#
# now add to db
#
for record in real_records:
    db.append(record)

希望对您的理解有所帮助。