【问题标题】:How Do I Suppress or Disable Warnings in reSTructuredText?如何抑制或禁用 reSTructuredText 中的警告?
【发布时间】:2011-05-02 23:37:30
【问题描述】:

我正在使用 Python 编写一个 CMS,它使用 reStructuredText(通过 docutils)来格式化内容。我的很多内容都是从其他来源导入的,通常以无格式文本文档的形式出现。 reST 非常适合这个,因为它默认情况下让一切看起来都很正常。

然而,我遇到的一个问题是,我收到警告转储到我的网络服务器上的标准错误注入我的页面内容。例如,我在网页上收到如下警告:

系统消息:WARNING/2(第 296 行);反向链接

我的问题是:如何禁止、禁用或以其他方式重定向这些警告?

理想情况下,我很想将这些写到日志文件中,但如果有人能告诉我如何关闭将警告注入到我的内容中,那将是完美的。

负责将 reST 解析为 HTML 的代码:

from docutils import core
import reSTpygments

def reST2HTML( str ):
    parts = core.publish_parts(
                          source = str,
                          writer_name = 'html')
    return parts['body_pre_docinfo'] + parts['fragment']

【问题讨论】:

    标签: python restructuredtext docutils


    【解决方案1】:

    report_level 接受字符串似乎是旧版本。现在,以下对我有用。

    import docutils.core
    import docutils.utils
    from pathlib import Path
    
    shut_up_level = docutils.utils.Reporter.SEVERE_LEVEL + 1
    docutils.core.publish_file(
        source_path=Path(...), destination_path=Path(...),
        settings_overrides={'report_level': shut_up_level},
        writer_name='html')
    

    关于级别

    # docutils.utils.__init__.py
    class Reporter(object):
        # system message level constants:
        (DEBUG_LEVEL,
         INFO_LEVEL,
         WARNING_LEVEL,
         ERROR_LEVEL,
         SEVERE_LEVEL) = range(5)
    
        ...
    
        def system_message(self, level, message, *children, **kwargs):
            ...
            if self.stream and (level >= self.report_level  # self.report_level was set by you. (for example, shut_up_level)
                        or self.debug_flag and level == self.DEBUG_LEVEL
                        or level >= self.halt_level):
                self.stream.write(msg.astext() + '\n')
            ...
            return msg
    

    根据上面的代码,你知道你可以分配self.report_level(即settings_overrides={'report_level': ...})让警告不显示。

    我将它设置为SERVER_LEVEL+1,所以它不会显示任何错误。 (你可以根据自己的需求来设置。

    【讨论】:

      【解决方案2】:
      def reST2HTML( str ):
          parts = core.publish_parts(
          source = str,
          writer_name = 'html',
          settings_overrides={'report_level':'quiet'},
          )
          return parts['body_pre_docinfo'] + parts['fragment']
      

      【讨论】:

        猜你喜欢
        • 2015-04-21
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 2011-03-18
        • 1970-01-01
        相关资源
        最近更新 更多