如何在 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+ 中运行它。
您可以尝试使用我的 dbf
2 库,它看起来像:
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?的主要内容,如果未能解决你的问题,请参考以下文章
50分征答:如何把*.dbf文件的数据导入SQLServer2000中?
ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法
ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法