[英]Error when trying to convert dbf to csv in Python
Python newbie here so please be gentle. 这里的Python新手,请保持温柔。
I'm trying to convert dbf file to csv. 我正在尝试将dbf文件转换为csv。 I stumbled upon a previous, similar question (with opposite conversion though) and was thinking abou using dbf module.
我偶然发现了一个先前的类似问题(尽管转换相反),并且正在考虑使用dbf模块。
Using example from the docs I tried this code: 使用文档中的示例,我尝试了以下代码:
import dbf
dbf_fn = r'_PATH_HERE_\dbffile.dbf'
csv_fn = r'_PATH_HERE_\csvfile.csv'
in_db = dbf.Table(dbf_fn)
in_db.export(filename=csv_fn, header=True)
When I try to run it I get the following error: 当我尝试运行它时,出现以下错误:
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
in_db.export(filename=csv_fn, header=True)
File "C:\Python27\ArcGIS10.1\lib\site-packages\dbf.py", line 3379, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Db3Table' object has no attribute 'export'
Why does the export fail? 为什么导出失败?
Update: 更新:
As suggested by chm I now use: 按照chm的建议,我现在使用:
dbf.export(in_db, csv_fn, header=True)
This still causes problem: 这仍然会导致问题:
Traceback (most recent call last):
File "D:\Data_RP\data\projects\kN\GIS\python\04_convert_dbf_ALT.py", line 31, in <module>
dbf.export(in_db, filename=csv_fn, header=True)
File "C:\Python27\ArcGIS10.1\lib\site-packages\dbf.py", line 5670, in export
table = source_table(table_or_records[0])
File "C:\Python27\ArcGIS10.1\lib\site-packages\dbf.py", line 3384, in __getitem__
return self._table[value]
File "C:\Python27\ArcGIS10.1\lib\site-packages\dbf.py", line 3175, in __getitem__
raise DbfError("%s is closed; record %d is unavailable" % (meta.filename, index))
DbfError: D:\Data_RP\data\projects\kN\GIS\shapes\SWM_4N.dbf is closed; record 0 is unavailable
I find that the doc on the site is wrong.If you use help in your code,you can see the right doc as below: 我发现网站上的文档有误。如果在代码中使用帮助,则会看到正确的文档,如下所示:
export(table_or_records, filename, field_names=None,
format='csv', header=True, codepage=None)
writes the records using CSV or tab-delimited format, using the filename
given if specified, otherwise the table name
if table_or_records is a collection of records (not an actual table) they
should all be of the same format
1. export
now is not a member of class Table
. 1.现在
export
不是Table
类的成员。 Just use dbf.export(in_db, csv_fn, header=True)
instead of in_db.export(filename=csv_fn, header=True)
只需使用
dbf.export(in_db, csv_fn, header=True)
代替in_db.export(filename=csv_fn, header=True)
2.use open
after create table (code sample:) 2.创建表后使用
open
(代码示例:)
import dbf
csv_fn = r'sdv.csv'
table = dbf.Table('temptable.dbf')
table.open()
dat=('John Doe', 31)
table.append(dat)
dbf.export(table, csv_fn, header = True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.