我正在编写一个Python脚本,将.DBC
文件(来自Datasus)转换为.CSV
。
我已经搜索了很多库来帮助我,但其中的任何一个都没有成功。有人知道在此转换任务中可能有用的选项/软件包吗?
[我不知道有什么能做实际的转换,但是假设您是说DBC BUS格式,有一个Python库可以读取:https://pypi.org/project/cantools/
并且Python具有内置的用于编写CSV的工具:https://docs.python.org/3/library/csv.html
只需要几行就可以将这些库组合成一个转换器。
我真的不明白为什么有些成员给问题-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进行转换会更好。但是这种方法可以正常工作。
将其转换为XLS(Microsoft Excel),然后从那里将其转换为.csv,我是ubuntu家伙,但我认为应该有一个导出选项。或至少在LibreOffice中有]