簡體   English   中英

如何在python 3.6.9中將dbf轉換為csv?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM