새 필드를 추가 할 dbf 파일이 있습니다. 이렇게하려면 dbfpy을 사용하여 원본 dbf를 열고 모든 필드 (또는 유지하고 싶은 필드) 및 레코드를 복사 한 다음 해당 필드와 원하는 새 파일을 더한 새 파일을 만듭니다. 사소한 세부 사항을 제외하고는 모두 잘 작동합니다. 원래 필드의 유형을 유지할 수는 없으므로 그 필드를 얻는 방법을 모르겠습니다. 내가 지금하고있는 일은 새로운 파일의 모든 필드를 "C"(문자)로 만드는 것인데, 지금까지는 필요한 것이지만 결국에는 문제가 될 수 있습니다.dbfpy를 사용하여 필드 유형을 얻는 방법은 무엇입니까?
실제 문제는 사용 가능한 문서가 없다는 것입니다. 패키지 파일을 통해 예제를 찾아 보았지만이 질문에 대한 답을 찾을 수 없었습니다. (나는 "녹색"이라는 단어로 찾을 수 없었을 것입니다. 저는 여전히 파이썬과 같습니다 ...) 나는 확실히 전문가가 아님).
코드의 예 : 시간에 미리
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()
감사합니다. 건배.