0
我有一些我想添加新字段的dbf文件。爲此,我使用dbfpy來打開原始dbf,複製所有字段(或我想保留的字段)並記錄,然後創建一個新文件,其中包含這些字段以及我想要的新字段。除了一個小細節之外,所有工作都很好:我無法保留原始字段的類型,因爲我不知道如何獲取它們。我正在做的是將新文件中的所有字段都創建爲「C」(字符),目前爲止我所需要的都是可用的,但最終可能會成爲問題。如何使用dbfpy獲取字段類型?
真正的問題是沒有可用的文檔。我搜索了整個軟件包文件,在那裏尋找例子,但是找不到這個問題的答案(可能是我找不到「綠色」,我仍然在使用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()
預先感謝您的時間。 乾杯。