修改DBF文件

时间:2016-08-17 15:37:21

标签: python

我想使用带有此库http://pythonhosted.org/dbf/的Python修改.dpf文件中的一列。
当我想要打印出一些列时,它可以正常工作。但是当我尝试修改列时,我收到错误

  

无法单独修改字段,但withProcess()

除外

我的代码:

table = dbf.Table('./path/to/file.dbf')
table.open()

for record in table:
    record.izo = sys.argv[2]

table.close()

在文档中,他们建议这样做

for record in Write(table):

但我也收到错误:

  

名称'Write'未定义   和

record.write_record(column=sys.argv[2])

还给我一个错误

  

write_record - 表

中没有这样的字段

谢谢!

2 个答案:

答案 0 :(得分:2)

我对文档的状态表示歉意。以下是一些应该有效的选项:

table = dbf.Table('./path/to/file.dbf')
# Process will open and close a table if not already opened
for record in dbf.Process(table):
    record.izo = sys.argv[2]

with dbf.Table('./path/to/file.dbf')
    # with opens a table, closes when done
    for record in table:
        with record:
            record.izo = sys.argv[2]

答案 1 :(得分:0)

几天来,我一直在尝试对dbf文件进行更改,并搜索和浏览了多个网站,该页面是唯一给我提供有效解决方案的页面。只是添加一些信息,以便任何人在这里都可以理解Ethan Furman共享的上述代码。

import dbf
table = dbf.Table('your_dbf_filename.dbf')
# Process will open and close a table if not already opened
for record in dbf.Process(table):
    record.your_column_name = 'New_Value_of_that_column'

现在,由于这里没有提到条件,因此您将结束更新列的所有行。请记住,该语句将立即反映该列中的新值。因此,建议是在对该dbf文件进行任何编辑之前保存一个副本。 我还尝试了Ethan提到的第二种解决方案,但是它引发了一个错误,即“表”未定义。