4
我有~300個帶有.dbf文件的文件夾,我想將其轉換爲.csv文件。在Python中將.dbf批量轉換爲.csv
我使用os.walk
來查找所有.dbf文件,然後使用dbfpy
模塊將每個.dbf文件轉換爲.csv。它似乎正確地找到並讀取.dbf文件,但不會將它們轉換爲.csv。我相信csv.writer代碼是問題。我沒有收到任何錯誤,但文件保持爲.dbf。
我在下面的代碼是基於找到的代碼here。
import csv
from dbfpy import dbf
import os
path = r"\Documents\House\DBF"
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
if filename.endswith('.DBF'):
in_db = dbf.Dbf(os.path.join(dirpath, filename))
csv_fn = filename[:-4]+ ".csv"
out_csv = csv.writer(open(csv_fn,'wb'))
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()
感謝您的回覆......不幸的是,我仍然無法得到這個工作。我在in_db之前得到了第二個「as」的「無效語法」錯誤。我嘗試了一堆不同的東西,但沒有運氣......呃。任何建議將非常歡迎! – 5tanczak
對不起,這是我的一部分。我沒有運行這個,並犯了幾個錯別字。道德 - 總是測試你的代碼,特別是當你確定它的工作原理時:)試試上面編輯的代碼,讓我知道你是否仍然有問題。 – munk
接近我想。在運行新版本後,我得到了以下錯誤:「struct.error:unpack需要長度爲8的字符串參數」我將「new = True」添加到「dbf.Dbf(os.path.join(dirpath,filename),新=真)「,以緩解這一點。現在我得到一個屬性錯誤:「AttributeError:\ __ exit__」我已經做了一些搜索,看起來這是「with statement」的常見問題,但不清楚如何解決。 – 5tanczak