使用python将.dbc文件转换为.csv

问题描述 投票:-1回答:3

我正在编写一个Python脚本,将.DBC文件(来自Datasus)转换为.CSV

我已经搜索了很多库来帮助我,但其中的任何一个都没有成功。有人知道在此转换任务中可能有用的选项/软件包吗?

python dbf
3个回答
1
投票

[我不知道有什么能做实际的转换,但是假设您是说DBC BUS格式,有一个Python库可以读取:https://pypi.org/project/cantools/

并且Python具有内置的用于编写CSV的工具:https://docs.python.org/3/library/csv.html

只需要几行就可以将这些库组合成一个转换器。


1
投票

我真的不明白为什么有些成员给问题-1,但是却没有真正回答。

[嗯,我还没有找到一个好的库可以将.DBC转换为.CSV。但是我可以使用Python + R做到这一点,我在这里分享我的实现方式。

下面的Python脚本获取R路径并执行dbc2csv.R文件,并发送三个arg:原始文件路径,转换后的文件路径以及将要转换的文件名。

import subprocess
import commands


def dbc2csv(raw_filename):
dbc2csv_path = "/path/to/script/dbc2csv.R " + raw_files_dir + " " + converted_files_dir + " " + raw_filename

try:
    r_script_path = commands.getstatusoutput('which Rscript')[1]
    subprocess.call(r_script_path + " --vanilla " + dbc2csv_path, shell=True)
    return True
except:
    print("(Rscript) Error converting file: " + raw_filename)

return False

下面的R脚本dbc2csv.R实际上是将转换的人。

#install.packages("read.dbc") You need this package
library("read.dbc")


dbc2dbf <- function(rawDir, convertedDir, file) {
    # reads dbc file
    x <- read.dbc(paste(rawDir, file, sep=""))
    # write it to csv
    write.csv(x, file=paste(convertedDir, file, ".csv", sep=""))
}

args = commandArgs(trailingOnly=TRUE)
try(dbc2dbf(args[1], args[2], args[3]), TRUE)

我们确实知道,仅使用Python进行转换会更好。但是这种方法可以正常工作。


0
投票

将其转换为XLS(Microsoft Excel),然后从那里将其转换为.csv,我是ubuntu家伙,但我认为应该有一个导出选项。或至少在LibreOffice中有]

© www.soinside.com 2019 - 2024. All rights reserved.