2016-06-17 1 views
1

이 같은 뭔가가 :dbf 파일에 필드를 추가하는 방법은 무엇입니까?

from dbfpy import dbf 
import random 

db = dbf.Dbf('DMWWGS84/DMAWGS84.dbf',new=False) 
db.addField(("Data","D")) 
for record in db: 
    print record 
    record["Data"]=random.random() 
db.close() 

를하지만 불평 :

Traceback (most recent call last): 
    File "merge_csv.py", line 5, in <module> 
    db.addField(("Data","D")) 
    File "/Users/alex/anaconda2/lib/python2.7/site-packages/dbfpy/dbf.py", line 246, in addField 
    raise TypeError("At least one record was added, " 
TypeError: At least one record was added, structure can't be changed 

어떤 기록이 말하는 그 것이다? 이 작업을 수행하는 좋은 방법입니까?

+0

이미있는 레코드입니다. –

+0

@ IgnacioVazquez-Abrams : 이미 그 안에있는 레코드를 어떻게 "추가"할 수 있습니까? 당신이 옳다면 그것은 끔찍한 오류 메시지입니다. –

+0

@EthanFurman : 예, 아마도 세계 최고의 문구가 아닙니다. –

답변

2

대신 내 dbf 라이브러리를 사용하여

핍 DBF 설치

이 명령 다음

과 (처음 pip install enum34해야 할 수도 있습니다) :

# lightly tested 

import dbf 
import random 

db = dbf.Table('whatever.dbf') 
with db: 
    db.add_fields('data N(12,7)') 
    for record in db: 
     dbf.write(record, data=random.random()) 

NB : 임의의 숫자를 날짜 필드에 쓰면 이 아닌이 잘 작동합니다.

+0

@ BigBoy1337 : 마지막 문장 고정 ("not"이 매우 중요한 단어 일 수 있음을 알 수 있습니다!) –

관련 문제