使用 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)
希望对您的理解有所帮助。
我想创建一个 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)
希望对您的理解有所帮助。