我有一些dbf文件,我想添加新的字段。为此,我使用dbfpy打开原始dbf,复制所有字段(或我要保留的字段)和记录,然后用这些字段和我想要的新字段创建一个新文件。所有的工作都很好,除了一个小细节:我无法保存原始字段的类型,因为我不知道如何获取它们。我要做的是将新文件中的所有字段创建为“C”(字符),目前为止,这适合我现在需要的,但最终可能会成为一个问题。在
真正的问题是没有可用的文档。我在包文件中搜索了一下这些示例,但是找不到这个问题的答案(可能是我无法仅仅通过python的“绿色”找到答案。。。我绝对不是专家)。在
代码示例:
from dbfpy import dbf
import sys
org_db_file = str(sys.argv[1])
org_db = dbf.Dbf(org_db_file, new = False)
new_db_file = str(sys.argv[2])
new_db = dbf.Dbf(new_db_file, new = True)
#Obtain original field names:
fldnames = []
fldsize = {}
for names in org_db.fieldNames:
fldnames.append(names)
fldsize[name] = 0
#Cycle thru table entries:
for rec in org_db:
#Cycle thru columns to obtain fields' name and value:
for name in fldnames:
value = str(rec[name])
if len(value) > fldsize[name]:
fldsize[name] = len(value)
#Copy original fields to new table:
for names in fldnames:
new_db.addField((names, "C", fldsize[name]))
#Add new fields:
new_fieldname = "some_name"
new_db.addField((new_fieldname, "C", 2))
#Copy original entries and store new values:
for rec in org_db:
#Create new record instance for new table:
new_rec = new_db.newRecord()
#Populate fields:
for field in fldnames:
new_rec[field] = rec[field]
#Store value of new field for record i:
new_rec[new_fieldname] = "some_value"
new_rec.store()
new_db.close()
提前谢谢你的时间。 干杯。在
除了几年前我第一次去看dbfpy时,我对dbfpy没有任何经验,它(和其他几个)不能满足我的需要。So I wrote my own.
以下是如何使用它完成任务:
相关问题 更多 >
编程相关推荐