繁体   English   中英

如何在 Python 3.8 的 dbf 文件中写入/追加一列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM