![](/img/trans.png)
[英]how can I create a new .dbf file with python (solution with ethanfurman/dbf package will be preferred)
[英]How can I write/append a column in a dbf file in Python 3.8?
我在 python 3.8 中附加 dbf 文件列时遇到问题。
我从SERIAL_NUM
列读取值的第一步是有效的; 但是在某些情况下,我需要 append 到SERIAL_NUM
列,我得到这个错误:
"AttributeError: 'DBF' object has no attribute 'append'"
我正在努力了解导致此问题的原因 - 请帮助我了解如何在 python 中附加/写入 dbf 列。
import dbf
from dbfread import DBF
table = DBF('C://Users//e833519//Desktop//VALIDATE.dbf', load=True)
table.open(mode=dbf.READ_WRITE)
for i in range(len(table)):
if((len(self.entry.get())<11) or (len(self.entry.get())>12) ):
self.result="snIncorect"
break
elif(table.records[i]['SERIAL_NUM']==self.entry.get()):
self.result="Compass"
break
else:
self.result="notCompass"
if ((self.result=="notCompass") and (self.verificareSiIntroducereCompass.get()==True)):
table.append("something on the column X")
您遇到的第一个问题是您同时使用了两个不同的 dbf 包。 你所拥有的一切都在工作,这纯粹是运气。
正如 BoarGules 提到的, dbfread
用于读取,而您正在使用dbfread.DBF
打开文件,因此您没有写入支持。
最后,当您说“追加”时,您的意思是“在 X 列中填写一个值”吗? 在那种情况下,X 列应该已经存在,并且您不是追加,而是写入该列。
您需要单独使用dbf
:
import dbf
table = dbf.Table('C:/Users/e833519/Desktop/VALIDATE.dbf')
table.open(mode=dbf.READ_WRITE)
for rec in table:
entry = self.entry.get()
if len(entry) < 11 or len(entry) > 12:
self.result = "snIncorect"
elif rec['SERIAL_NUM'] == entry:
self.result = "Compass"
else:
self.result = "notCompass"
if self.result == "notCompass" and self.verificareSiIntroducereCompass.get():
dbf.write(rec, {'column_X': "something"})
上面的代码也稍微改写成Python的风格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.