【问题标题】:Append dbf files to one dbf file将 dbf 文件附加到一个 dbf 文件
【发布时间】:2019-03-20 07:50:20
【问题描述】:

我在一个目录中有很多文件,例如['FredrikstadAvst1.dbf', 'FredrikstadAvst2.dbf', ...]。我想编写一个 Python 脚本将这些文件连接成一个新的"*.dbf" 文件。

我有一个几乎可以完成这项工作的 Python 脚本。但是在输出文件上它一直覆盖。因此,当作业完成时,输出文件仅包含我目录中的最后一个文件。

这是我的脚本:

import os, glob, shutil

folder_path = r'C:\Tom\Oppdrag_2019\Pendle\2018'
for filename in glob.glob(os.path.join(folder_path, '*.dbf')):

    fd = open(filename, 'r')

    List = []
    List.append(fd)

    print filename
wfd = open(r"C:\Tom\Oppdrag_2019\Pendle\FredrikstadAvst.dbf",'a')
shutil.copyfileobj(fd, wfd, 1024*1024*10)

【问题讨论】:

  • 使用a 模式追加到现有文件。
  • 你不能只是像这样附加 dbf 文件,它不仅仅是一个字节包
  • @HongOoi 哦,也许dbf 库可能会有所帮助
  • 它不适用于模式而不是 wb。它仍然会覆盖。

标签: python python-2.x arcpy


【解决方案1】:

考虑以下几点:

import os, glob, shutil

folder_path = r'C:\Tom\Oppdrag_2019\Pendle\2018'
wfd = open(r"C:\Tom\Oppdrag_2019\Pendle\FredrikstadAvst.dbf",'w')
for filename in glob.glob(os.path.join(folder_path, '*.dbf')):
    fd = open(filename, 'r')
    shutil.copyfileobj(fd, wfd, 1024*1024*10)
    fd.close()
wfd.close()

通过在循环之前打开文件并仅在遍历每个 dbf 文件后关闭,它不应该被覆盖。我删除了List(这是一个保留关键字,所以尽量不要使用它),因为我在这里看不到它的用途。

【讨论】:

  • 那会是什么?
  • 它将所有内容写入文件。但看起来格式有问题。当我在 Excel 中打开文件时,文件中没有系统。我可以发图片,但我不知道如何在这里发图片。
  • @user15888 你不能随意地将东西附加到 dbf 文件中。它不是那样工作的。您必须将每个文件中的数据读入一个表中,然后将该表写入一个新文件中。
  • 现在几乎可以工作了。但是标题为每个文件写入。我只想第一次写标题。每次如何跳过标题?
【解决方案2】:

现在几乎可以工作了。但是标题为每个文件写入。我只想第一次写标题。每次如何跳过标题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多