Python - 将CSV转换为DBF

2 投票
2 回答
13252 浏览
提问于 2025-04-16 05:15

我想用Python把一个csv文件转换成dbf文件(因为我需要这个dbf文件来进行地理编码)。我可以很容易地在stat/transfer或其他类似的软件中做到这一点,但我希望能把这个过程放在我的脚本里,而不是去外面的程序里。网上有很多关于把DBF转换成CSV的帮助问题和答案,但我在反向转换时却没有找到合适的解决办法。

如果能用dbfpy来回答这个问题就太好了,只是我还没弄明白具体该怎么做。

作为我想要的一个例子,这里有一些我在网上找到的把dbf转换成csv的代码:

import csv,arcgisscripting
from dbfpy import dbf

gp = arcgisscripting.create()

try:
    inFile = gp.GetParameterAsText(0) #Input
    outFile = gp.GetParameterAsText(1)#Output
    dbfFile = dbf.Dbf(open(inFile,'r'))
    csvFile = csv.writer(open(outFile, 'wb'))
    headers = range(len(dbfFile.fieldNames))
    allRows = []
    for row in dbfFile:
        rows = []
        for num in headers:
            rows.append(row[num])
        allRows.append(rows)
    csvFile.writerow(dbfFile.fieldNames)
    for row in allRows:
        print row
        csvFile.writerow(row)
except:
    print gp.getmessage()

如果能得到类似的代码来实现反向转换,那就太好了。

谢谢!

2 个回答

0

比如,你可以试试以下链接:

你也可以直接在OpenOffice或Excel中打开CSV文件,然后保存为dBase格式。

我猜你是想为Esri Shapefile格式创建属性文件之类的东西。要注意的是,DBF文件通常使用一些比较古老的字符编码,比如CP 850。如果你的地理数据中包含外语名字,这可能会造成问题。不过,Esri可能指定了不同的编码。

编辑:我刚注意到你不想使用外部工具。

1

这个问题在这里已经有人问过了:如何用Python把.csv文件转换成.dbf文件?

那里的一个很不错的回答是:使用csv库来读取你的csv文件中的数据。然后可以用第三方的dbf库来帮你写一个dbf文件。

撰写回答