【问题标题】:Getting HTML body with cgitb使用 cgitb 获取 HTML 正文
【发布时间】:2012-08-17 01:59:05
【问题描述】:

我正在使用 cgitb (python 2.7) 创建 html 文档服务器端。我有文件进行一堆查询,然后生成 html。我希望能够只链接 html,所以如果我可以将 html 打印到一个新文件并链接它,它会起作用。

有没有办法获取页面将在处理结束时生成的 html,以便我可以将其放入一个新文件中,而无需跟踪我迄今为止所做的一切?

编辑:在这里找到一个片段:https://stackoverflow.com/a/616686/1576740

class Tee(object):
    def __init__(self, name, mode):
        self.file = open(name, mode)
        self.stdout = sys.stdout
        sys.stdout = self
    def __del__(self):
        sys.stdout = self.stdout
        self.file.close()
    def write(self, data):
        self.file.write(data)
        self.stdout.write(data)

您必须在导入 cgi 后调用它,因为它会以一种不太友好的方式覆盖标准输出。但就像一个魅力。

我刚刚导入 cgi;....... Tee(filname, "w") 然后我有一个文件链接。

【问题讨论】:

  • 你在使用 cgitb 的回溯能力吗?你确定你不只是想要 cgi 吗?

标签: python cgi cgitb


【解决方案1】:

来自Python Documentation

或者,您可以将此信息保存到文件中,而不是将其发送到浏览器。

在这种情况下你会想要使用

cgitb.enable(display=1, logdir=directory)

【讨论】:

  • 这似乎只是声称要打印回溯。它也不适合我。我正在做 cgitb.enable(1, '/tmp/test.html') 并且它似乎没有做任何事情,即使在错误退出时也是如此。
  • 目录,而不是文件,你如何在非错误退出时使用 cgitb?
  • 我不这么认为。我该如何设置它?
  • 所以 cgitb 会报告错误,如果你的程序运行良好,那么 cgitb 永远不会被处理。也许您想打开您的标准输出?
  • 这正是我想要的:stackoverflow.com/a/616686/1576740
【解决方案2】:
import cgitb
import sys

try:
    ...
except:
    with open("/path/to/file.html", "w") as fd:
        fd.write(cgitb.html(sys.exc_info()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多