将执行日志合并到报告中

时间:2013-12-05 20:05:15

标签: python c matlab logging report

我将一些选通信号插入到C源代码中,以获取有关每次执行的有趣信息。 目前,我会在每次执行时将信息打印在文件中。我有这样的清单:

  • property1:value1
  • property2:value2
  • {这些值与2个不同的执行相关}}
  • property1:value3
  • property2:value4

我想要的是:

  • property1:value1 + value3
  • property2:value2 + value4

我想以有效的方式生成报告。我更喜欢使用MATLAB或Python。 用户roippi给了我一个很好的Python答案。我也有兴趣在MATLAB中做同样的事情。

任何指针?

这是我的实际输入:

  • S [10] 1
  • S [0] 1
  • S [1] 1
  • S [2] 0
  • S [3] 1
  • S [4] 1
  • S [5] 4
  • S [6] 4
  • S [7] 0
  • S [8] 0
  • S [9] 1
  • S [10] 1
  • S [0] 1
  • S [1] 1
  • S [2] 0
  • S [3] 1
  • S [4] 1
  • S [5] 4
  • S [6] 4
  • S [7] 0
  • S [8] 0
  • S [9] 1

2 个答案:

答案 0 :(得分:1)

那么您是否希望将日志文件后处理到其他文件中?在python中很容易:

infile中:

prop1 thing
prop2 stuff
prop3 junk
prop1 something
prop2 whatever

蟒:

from collections import defaultdict
d = defaultdict(list)

with open('infile') as f:
    for line in f:
        k,v = line.strip().split()
        d[k].append(v)

然后格式化输出:

for k,v in sorted(d.items()):
    print('{}: {}'.format(k,'+'.join(v)))

prop1: thing+something
prop2: stuff+whatever
prop3: junk

用您想要执行的任何实际文件写操作替换print

答案 1 :(得分:0)

如果值是一个整数,并且你要添加属性的所有值,这是python中的另一种方式:

infile = file("input.txt", 'r')
outfile = file("output.txt", 'w')

from collections import defaultdict
props = defaultdict(int)

for line in infile:
   p, v = line.split()
   props[p] += int(v)

for p, v in sorted(props.items()):
    outfile.write("%s: %d\n" % (p,v))

输出将被排序,但它不是一种自然的排序,你必须为此添加更多的python代码。