[英]How to convert dbf to csv in python 3.6.9?
我有大量 .dbf 數據(每個大約 1gb),我需要將其轉換為 .csv 以便在我的精算工具中使用。 我找到了一個適用於 pyhton 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
僅適用於 Python2.7 1 ,而您正在 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 兼容的。 但是,它不支持索引文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.