File: concatlogs.py

package info (click to toggle)
opencv 4.10.0%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 282,092 kB
  • sloc: cpp: 1,178,079; xml: 682,621; python: 49,092; lisp: 31,150; java: 25,469; ansic: 11,039; javascript: 6,085; sh: 1,214; cs: 601; perl: 494; objc: 210; makefile: 173
file content (50 lines) | stat: -rwxr-xr-x 1,603 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env python
""" Combines multiple uniform HTML documents with tables into a single one.

HTML header from the first document will be used in the output document. Largest
`<tbody>...</tbody>` part from each document will be joined together.
"""

from optparse import OptionParser
import glob, sys, os, re

if __name__ == "__main__":
    parser = OptionParser()
    parser.add_option("-o", "--output", dest="output", help="output file name", metavar="FILENAME", default=None)
    (options, args) = parser.parse_args()

    if not options.output:
        sys.stderr.write("Error: output file name is not provided")
        exit(-1)

    files = []
    for arg in args:
        if ("*" in arg) or ("?" in arg):
            files.extend([os.path.abspath(f) for f in glob.glob(arg)])
        else:
            files.append(os.path.abspath(arg))

    html = None
    for f in sorted(files):
        try:
            fobj = open(f)
            if not fobj:
                continue
            text = fobj.read()
            if not html:
                html = text
                continue
            idx1 = text.find("<tbody>") + len("<tbody>")
            idx2 = html.rfind("</tbody>")
            html = html[:idx2] + re.sub(r"[ \t\n\r]+", " ", text[idx1:])
        except:
            pass

    if html:
        idx1 = text.find("<title>") + len("<title>")
        idx2 = html.find("</title>")
        html = html[:idx1] + "OpenCV performance testing report" + html[idx2:]
        open(options.output, "w").write(html)
    else:
        sys.stderr.write("Error: no input data")
        exit(-1)