python可以接受一个C数组(来自一个文件)并对其进行一些处理吗?例如,假设我有一个 C 标头,其中包含:
static char bin[] = {...}; // whole bunch of hex values
我可以编写一个 python 脚本来计算数组中有多少字节吗?我想这样做的原因是我有大约 100 个这样的标头,其中一些具有相同的数组名称,所以我不能包括所有这些和每一个的大小。
关于我应该研究什么的任何建议?不一定是 python,但我觉得这是正确的工具。
谢谢!
如果数组初始值设定项不跨越多行,则此 Perl 单行可能会有所帮助:
perl -lne '($p)=($_=~/static char bin\[\] = \{([^}]*)\}/) and
$p=~s/[^,]*//g; print length($p)' input.h
这是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
这做出了一些假设,例如逗号分隔,并仅打印出它发现的内容-您对信息的处理取决于您-问题中并不清楚