当前位置: 首页 > 知识库问答 >
问题:

Python中.dbf到.csv的批量转换

慕容俭
2023-03-14
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()

共有1个答案

羊和光
2023-03-14

您拥有的原始文件将作为DBF保留。实际上并不是替换它,而是创建一个新的csv文件。我认为问题是写到磁盘从来没有发生。我怀疑csv编写器没有刷新文件缓冲区。

我看到的另一个问题是out_csv是有条件创建的,所以如果在该目录中有其他文件具有不同的扩展名,就会遇到问题。

尝试使用上下文管理器:

for dirpath, dirnames, filenames in os.walk(path):
    for filename in filenames:
        if filename.endswith('.DBF'):
            csv_fn = filename[:-4]+ ".csv"
            with open(csv_fn,'wb') as csvfile:
                in_db = dbf.Dbf(os.path.join(dirpath, 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()
 类似资料:
  • 问题内容: 如何使用python脚本将.csv文件转换为.dbf文件?我发现这一块的代码,在网上,但我不能肯定它是多么可靠。是否有任何具有此功能的模块? 问题答案: 在网上找不到任何可以读取CSV文件并写入DBF文件的文件,因此您只需调用它并提供2个文件路径即可。对于每个DBF字段,您需要指定类型,大小和(如果相关)小数位数。 一些问题: 哪些软件将使用输出的DBF文件? 没有所谓的“ the”(

  • 我有这样的CSV结构 我还有一个json响应 我需要这样的输出

  • 本文向大家介绍Python批量转换文件编码格式,包括了Python批量转换文件编码格式的使用技巧和注意事项,需要的朋友参考一下 自己写的方法,适用于linux, py2.6以下版本可用代码 支持py3.1的版本 以上所述就是本文 的全部内容了,希望大家能够喜欢。

  • 问题内容: 有没有办法将NumPy数组转储到CSV文件中?我有一个2D NumPy数组,需要以人类可读的格式转储它。 问题答案: 将数组保存到文本文件。

  • 本文向大家介绍python UDF 实现对csv批量md5加密操作,包括了python UDF 实现对csv批量md5加密操作的使用技巧和注意事项,需要的朋友参考一下 工作上遇到需求,一批手机号要md5加密导出。为了保证数据安全,所以没有采用网上工具来加密。 md5的加密算法是开源的且成熟的,很多语言都有对应包可以直接用,我写了一个简单的python来实现,另一位同事做了一个hiveUDF来实现,

  • 所以我试图转换一个. xml数据源: 转换成. csv但以这种格式格式化 我有重复的元素,比如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列。 我发现了一个工具,我相信它确实可以做到这一点,但我不知道如何设置它 我有两个文件——a。蝙蝠和。罐子在内部。bat我们有以下默认代码: 我不知道该怎么修改这个。有谁能提供一些建议吗?