如何在 python 3.6.9 中将 dbf 转换为 csv?

Posted

技术标签:

【中文标题】如何在 python 3.6.9 中将 dbf 转换为 csv?【英文标题】:How to convert dbf to csv in python 3.6.9? 【发布时间】:2020-03-31 02:45:04 【问题描述】:

我有大量 .dbf 数据(每个大约 1gb),我需要将其转换为 .csv 以便在我的精算工具中使用。我找到了一个适用于 python 2 的代码(我的朋友尝试并设法生成了 dummy.csv)。我必须使用 3.6.9(工作场所使用 3.6.9)但无法使其在该版本中运行。

我是 python 的新手,因此非常感谢任何帮助。非常感谢!

import csv 
from dbfpy import dbf 
import os
import sys

filename = 'DUMMY.dbf'
if filename.endswith('.dbf'):
  print ("Converting %s to csv" % filename)
  csv_fn = filename[:-4]+ ".csv"
  with open(csv_fn,'wb') as csvfile:
        in_db = dbf.Dbf(filename)
        out_csv = csv.writer(csvfile)
            names = []
        for field in in_db.header.fields:
             names.append(field.name)
        out_csv.writerow(names)
        for rec in in_db:
            out_csv.writerow(rec.fieldData)
        in_db.close()
        print ("Done...")
else:
  print ("Filename does not end with .dbf")
  

当然,抱歉,忘记了错误。

   Traceback (most recent call last):

  File "/opt/anaconda/envs/env_python/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-4-11540611f260>", line 2, in <module>
    from dbfpy import dbf

  File "/opt/anaconda/envs/env_python/lib/python3.6/site-packages/dbfpy/dbf.py", line 280
    print repr(_rec)
             ^
SyntaxError: invalid syntax

【问题讨论】:

你能提供错误吗 当然!我刚刚添加了它。 您似乎无法导入dbfpy 包。 好吧,我看到安装了 dbfpy 包。你觉得我说错了吗? 我认为是关于dbfpy 包。我会去包装看看有什么问题。你可以试试另一个包,比如 dbfread:pypi.org/project/dbfread> 【参考方案1】:

问题是dbfpy 仅适用于 Python2.71,而您正在 Python 3+ 中运行它。

您可以尝试使用我的 dbf2 库,它看起来像:

import dbf
import sys

if len(sys.argv) != 2:
    sys.exit('must provide name of dbf file to convert')
elif if sys.argv[1][-4:].lower() != '.dbf'):
    sys.exit('%r does not appear to be a dbf file' % (sys.argv[1], ))

dbf_file = sys.argv[1]
dbf_table = dbf.Table(dbf_file)

# create .csv file in same location as .dbf file
dbf.export(dbf_table)

1 至少,您安装的dbfpy 的版本要么只有2.7,要么还嵌入了一些仅2.7 的代码。

2 我的 dbf 库是 2/3 兼容的。但是,它不支持索引文件。

【讨论】:

以上是关于如何在 python 3.6.9 中将 dbf 转换为 csv?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将 .dbf 批量转换为 .csv

50分征答:如何把*.dbf文件的数据导入SQLServer2000中?

ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法

ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法

`Git add --patch` 多个文件:从上一个文件转到大块

如何在 PowerShell 中将 HashSet 转换为 ArrayList?