【发布时间】:2009-08-07 20:06:29
【问题描述】:
我正在尝试解析 Python doctest 模块的输出并将其存储在 HTML 文件中。
我有类似这样的输出:
**********************************************************************
File "example.py", line 16, in __main__.factorial
Failed example:
[factorial(n) for n in range(6)]
Expected:
[0, 1, 2, 6, 24, 120]
Got:
[1, 1, 2, 6, 24, 120]
**********************************************************************
File "example.py", line 20, in __main__.factorial
Failed example:
factorial(30)
Expected:
25252859812191058636308480000000L
Got:
265252859812191058636308480000000L
**********************************************************************
1 items had failures:
2 of 8 in __main__.factorial
***Test Failed*** 2 failures.
每个失败之前都有一行星号,用于分隔每个测试失败。
我想做的是去掉失败的文件名和方法,以及预期和实际结果。然后我想使用它创建一个 HTML 文档(或将其存储在一个文本文件中,然后进行第二轮解析)。
我怎样才能只使用 Python 或一些 UNIX shell 实用程序组合来做到这一点?
编辑:我制定了以下 shell 脚本,它与我想要的每个块匹配,但我不确定如何将每个 sed 匹配重定向到它自己的文件。
python example.py | sed -n '/.*/,/^\**$/p' > `mktemp error.XXX`
【问题讨论】:
-
如果去掉文件、方法、预期和实际结果,还剩下什么?
-
好吧,我只是无法将它们解析成单独的块,因为到目前为止我只能一次抓取整个块,而不是单个字段。
标签: python parsing shell doctest