opencv/modules/ts/misc/concatlogs.py
Maksim Shabunin c0a84dcc85
Merge pull request #22651 from mshabunin:script-doc
ts: basic documentation for utility scripts
2022-10-20 14:11:02 +03:00

51 lines
1.6 KiB
Python
Executable File

#!/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)