3

Python初心者ですのでお手柔らかにお願いします。

dbf ファイルを csv に変換しようとしています。私は以前の同様の質問に出くわし(反対の変換があります)、 dbfモジュールの使用について考えていました。

ドキュメントの例を使用して、このコードを試しました:

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)

実行しようとすると、次のエラーが表示されます。

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'

エクスポートが失敗するのはなぜですか?


アップデート:

chmで提案されているように、私は今使用しています:

dbf.export(in_db, csv_fn, header=True)

これはまだ問題を引き起こします:

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
4

1 に答える 1

4

サイトのドキュメントが間違っていることがわかりました。コードでヘルプを使用すると、次のように正しいドキュメントが表示されます。

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今はクラスのメンバーではありませんTabledbf.export(in_db, csv_fn, header=True) 代わりに 使用するだけ ですin_db.export(filename=csv_fn, header=True)

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)
于 2012-12-19T03:05:56.790 に答える