python可以接受一个C数组(来自文件)并对其进行一些处理吗?例如,假设我有一个包含以下内容的C头:
static char bin[] = {...}; // whole bunch of hex values
我可以编写一个python脚本来计算数组中有多少字节?我想这样做的原因是我有大约100个这些标题,其中一些具有相同的数组名称,所以我不能包括所有这些和sizeof每个。
有关我应该研究什么的任何建议?不一定是python,但我觉得这是正确的工具。
谢谢!
答案 0 :(得分:0)
如果数组初始值设定项不跨越多行,则此Perl单行可能会有所帮助:
perl -lne '($p)=($_=~/static char bin\[\] = \{([^}]*)\}/) and
$p=~s/[^,]*//g; print length($p)' input.h
答案 1 :(得分:0)
这是对python版本的尝试:
如果每个数组中的值以逗号分隔,则可以尝试以下操作:
import glob
#get all the headers in the current directory
headers = glob.glob("*.h")
for header in headers:
fp = open(header, "r")
for line in fp.readlines():
if line.startswith("static char"):
bits = line.split(",")
count = len(bits)-1
print "Found array starting %s"%bits[0]
print "containing %d bytes"%count
print "in file %s"%header
这做了一些假设,比如逗号分离,只是打印出它找到的内容 - 你对信息的处理取决于你 - 这在问题中并不清楚