我有大约300个带有.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()
您拥有的原始文件将保留为dbf。实际上并不是要替换它,而是创建一个新的csv文件。我认为问题在于,写入磁盘的操作永远不会发生。我怀疑csv编写器没有刷新文件缓冲区。
我看到的另一个问题是out-csv是有条件创建的,因此如果在该目录中有其他扩展名不同的文件,则会遇到问题。
尝试使用上下文管理器:
“with”语句(上下文管理器)将关闭文件并在结尾刷新缓冲区,而无需显式执行此操作。
相关问题 更多 >
编程相关推荐