709 lines
74 KiB
HTML
709 lines
74 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<title>nntplib --- NNTP 协议客户端 — Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
|
||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/language_data.js"></script>
|
||
<script src="../_static/translations.js"></script>
|
||
|
||
<script src="../_static/sidebar.js"></script>
|
||
|
||
<link rel="search" type="application/opensearchdescription+xml"
|
||
title="在 Python 3.8.20 文档 中搜索"
|
||
href="../_static/opensearch.xml"/>
|
||
<link rel="author" title="关于这些文档" href="../about.html" />
|
||
<link rel="index" title="索引" href="../genindex.html" />
|
||
<link rel="search" title="搜索" href="../search.html" />
|
||
<link rel="copyright" title="版权所有" href="../copyright.html" />
|
||
<link rel="next" title="smtplib --- SMTP 协议客户端" href="smtplib.html" />
|
||
<link rel="prev" title="imaplib --- IMAP4 协议客户端" href="imaplib.html" />
|
||
<link rel="canonical" href="https://docs.python.org/3/library/nntplib.html" />
|
||
|
||
|
||
|
||
|
||
|
||
<style>
|
||
@media only screen {
|
||
table.full-width-table {
|
||
width: 100%;
|
||
}
|
||
}
|
||
</style>
|
||
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
|
||
<script type="text/javascript" src="../_static/copybutton.js"></script>
|
||
<script type="text/javascript" src="../_static/menu.js"></script>
|
||
|
||
</head>
|
||
<body>
|
||
<div class="mobile-nav">
|
||
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
|
||
<label for="menuToggler" class="toggler__label">
|
||
<span></span>
|
||
</label>
|
||
<nav class="nav-content" role="navigation">
|
||
<a href="https://www.python.org/" class="nav-logo">
|
||
<img src="../_static/py.svg" alt="Logo"/>
|
||
</a>
|
||
<div class="version_switcher_placeholder"></div>
|
||
<form role="search" class="search" action="../search.html" method="get">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||
<path fill-rule="nonzero"
|
||
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
|
||
</svg>
|
||
<input type="text" name="q" aria-label="快速搜索"/>
|
||
<input type="submit" value="转向"/>
|
||
</form>
|
||
</nav>
|
||
<div class="menu-wrapper">
|
||
<nav class="menu" role="navigation" aria-label="main navigation">
|
||
<div class="language_switcher_placeholder"></div>
|
||
<h3><a href="../contents.html">目录</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code> --- NNTP 协议客户端</a><ul>
|
||
<li><a class="reference internal" href="#nntp-objects">NNTP 对象</a><ul>
|
||
<li><a class="reference internal" href="#attributes">属性</a></li>
|
||
<li><a class="reference internal" href="#methods">方法</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#utility-functions">工具函数</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>上一个主题</h4>
|
||
<p class="topless"><a href="imaplib.html"
|
||
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">imaplib</span></code> --- IMAP4 协议客户端</a></p>
|
||
<h4>下一个主题</h4>
|
||
<p class="topless"><a href="smtplib.html"
|
||
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">smtplib</span></code> --- SMTP 协议客户端</a></p>
|
||
<div role="note" aria-label="source link">
|
||
<h3>本页</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="../bugs.html">报告 Bug</a></li>
|
||
<li>
|
||
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/nntplib.rst"
|
||
rel="nofollow">显示源代码
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
|
||
这个文档所针对的是一个已不再受支持的 Python 旧版本。
|
||
你应当升级版本,并阅读
|
||
<a href="/3/library/nntplib.html"> Python 当前稳定版本的文档</a>.
|
||
</div>
|
||
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<h3>导航</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="../genindex.html" title="总目录"
|
||
accesskey="I">索引</a></li>
|
||
<li class="right" >
|
||
<a href="../py-modindex.html" title="Python 模块索引"
|
||
>模块</a> |</li>
|
||
<li class="right" >
|
||
<a href="smtplib.html" title="smtplib --- SMTP 协议客户端"
|
||
accesskey="N">下一页</a> |</li>
|
||
<li class="right" >
|
||
<a href="imaplib.html" title="imaplib --- IMAP4 协议客户端"
|
||
accesskey="P">上一页</a> |</li>
|
||
|
||
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li class="switchers">
|
||
<div class="language_switcher_placeholder"></div>
|
||
<div class="version_switcher_placeholder"></div>
|
||
</li>
|
||
<li>
|
||
|
||
</li>
|
||
<li id="cpython-language-and-version">
|
||
<a href="../index.html">3.8.20 Documentation</a> »
|
||
</li>
|
||
|
||
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> »</li>
|
||
<li class="nav-item nav-item-2"><a href="internet.html" accesskey="U">互联网协议和支持</a> »</li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" role="search">
|
||
<form class="inline-search" action="../search.html" method="get">
|
||
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
|
||
<input type="submit" value="转向" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
|
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<section id="module-nntplib">
|
||
<span id="nntplib-nntp-protocol-client"></span><h1><a class="reference internal" href="#module-nntplib" title="nntplib: NNTP protocol client (requires sockets)."><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code></a> --- NNTP 协议客户端<a class="headerlink" href="#module-nntplib" title="永久链接至标题">¶</a></h1>
|
||
<p><strong>源代码:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.8/Lib/nntplib.py">Lib/nntplib.py</a></p>
|
||
<hr class="docutils" id="index-0" />
|
||
<p>此模块定义了 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 类来实现网络新闻传输协议的客户端。 它可被用于实现一个新闻阅读或发布器,或是新闻自动处理程序。 它兼容了 <span class="target" id="index-19"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3977.html"><strong>RFC 3977</strong></a> 以及较旧的 <span class="target" id="index-20"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc977.html"><strong>RFC 977</strong></a> 和 <span class="target" id="index-21"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2980.html"><strong>RFC 2980</strong></a>。</p>
|
||
<p>下面是此模块的两个简单用法示例。 列出某个新闻组的一些统计数据并打印最近 10 篇文章的主题:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">nntplib</span><span class="o">.</span><span class="n">NNTP</span><span class="p">(</span><span class="s1">'news.gmane.io'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s1">'gmane.comp.python.committers'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'Group'</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">'has'</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="s1">'articles, range'</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="s1">'to'</span><span class="p">,</span> <span class="n">last</span><span class="p">)</span>
|
||
<span class="go">Group gmane.comp.python.committers has 1096 articles, range 1 to 1096</span>
|
||
<span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">overviews</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">over</span><span class="p">((</span><span class="n">last</span> <span class="o">-</span> <span class="mi">9</span><span class="p">,</span> <span class="n">last</span><span class="p">))</span>
|
||
<span class="gp">>>> </span><span class="k">for</span> <span class="nb">id</span><span class="p">,</span> <span class="n">over</span> <span class="ow">in</span> <span class="n">overviews</span><span class="p">:</span>
|
||
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">nntplib</span><span class="o">.</span><span class="n">decode_header</span><span class="p">(</span><span class="n">over</span><span class="p">[</span><span class="s1">'subject'</span><span class="p">]))</span>
|
||
<span class="gp">...</span>
|
||
<span class="go">1087 Re: Commit privileges for Łukasz Langa</span>
|
||
<span class="go">1088 Re: 3.2 alpha 2 freeze</span>
|
||
<span class="go">1089 Re: 3.2 alpha 2 freeze</span>
|
||
<span class="go">1090 Re: Commit privileges for Łukasz Langa</span>
|
||
<span class="go">1091 Re: Commit privileges for Łukasz Langa</span>
|
||
<span class="go">1092 Updated ssh key</span>
|
||
<span class="go">1093 Re: Updated ssh key</span>
|
||
<span class="go">1094 Re: Updated ssh key</span>
|
||
<span class="go">1095 Hello fellow committers!</span>
|
||
<span class="go">1096 Re: Hello fellow committers!</span>
|
||
<span class="gp">>>> </span><span class="n">s</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span>
|
||
<span class="go">'205 Bye!'</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>要基于一个二进制文件发布文章 (假定文章包含有效的标头,并且你有在特定新闻组上发布内容的权限):</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">nntplib</span><span class="o">.</span><span class="n">NNTP</span><span class="p">(</span><span class="s1">'news.gmane.io'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'article.txt'</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">s</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||
<span class="go">'240 Article posted successfully.'</span>
|
||
<span class="gp">>>> </span><span class="n">s</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span>
|
||
<span class="go">'205 Bye!'</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>此模块本身定义了以下的类:</p>
|
||
<dl class="class">
|
||
<dt id="nntplib.NNTP">
|
||
<em class="property">class </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTP</code><span class="sig-paren">(</span><em class="sig-param">host</em>, <em class="sig-param">port=119</em>, <em class="sig-param">user=None</em>, <em class="sig-param">password=None</em>, <em class="sig-param">readermode=None</em>, <em class="sig-param">usenetrc=False</em><span class="optional">[</span>, <em class="sig-param">timeout</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>返回一个新的 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 对象,代表一个对运行于主机 <em>host</em>,在端口 <em>port</em> 上监听的 NNTP 服务器的连接。 可以为套接字连接指定可选的 <em>timeout</em>。 如果提供了可选的 <em>user</em> 和 <em>password</em>,或者如果在 <code class="file docutils literal notranslate"><span class="pre">/.netrc</span></code> 中存在适合的凭证并且可选的旗标 <em>usenetrc</em> 为真值,则会使用 <code class="docutils literal notranslate"><span class="pre">AUTHINFO</span> <span class="pre">USER</span></code> 和 <code class="docutils literal notranslate"><span class="pre">AUTHINFO</span> <span class="pre">PASS</span></code> 命令在服务器上标识和认证用户。 如果可选的旗标 <em>readermode</em> 为真值,则会在执行认证之前发送 <code class="docutils literal notranslate"><span class="pre">mode</span> <span class="pre">reader</span></code> 命令。 在某些时候如果你是连接本地机器上的 NNTP 服务器并且想要调用读取者专属命令如 <code class="docutils literal notranslate"><span class="pre">group</span></code> 那么还必须使用读取者模式。 如果你收到预料之外的 <a class="reference internal" href="#nntplib.NNTPPermanentError" title="nntplib.NNTPPermanentError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NNTPPermanentError</span></code></a>,你可能需要设置 <em>readermode</em>。 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 类支持使用 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句来无条件地消费 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a> 异常并在结束时关闭 NNTP 连接,例如:</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">nntplib</span> <span class="kn">import</span> <span class="n">NNTP</span>
|
||
<span class="gp">>>> </span><span class="k">with</span> <span class="n">NNTP</span><span class="p">(</span><span class="s1">'news.gmane.io'</span><span class="p">)</span> <span class="k">as</span> <span class="n">n</span><span class="p">:</span>
|
||
<span class="gp">... </span> <span class="n">n</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s1">'gmane.comp.python.committers'</span><span class="p">)</span>
|
||
<span class="gp">... </span>
|
||
<span class="go">('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')</span>
|
||
<span class="gp">>>></span>
|
||
</pre></div>
|
||
</div>
|
||
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">nntplib.connect</span></code> 附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">host</span></code>, <code class="docutils literal notranslate"><span class="pre">port</span></code>。</p>
|
||
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">nntplib.putline</span></code>,附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">line</span></code>。</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.2 版更改: </span><em>usenetrc</em> 现在默认为 <code class="docutils literal notranslate"><span class="pre">False</span></code>。</p>
|
||
</div>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.3 版更改: </span>添加了对 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句的支持。</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="class">
|
||
<dt id="nntplib.NNTP_SSL">
|
||
<em class="property">class </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTP_SSL</code><span class="sig-paren">(</span><em class="sig-param">host</em>, <em class="sig-param">port=563</em>, <em class="sig-param">user=None</em>, <em class="sig-param">password=None</em>, <em class="sig-param">ssl_context=None</em>, <em class="sig-param">readermode=None</em>, <em class="sig-param">usenetrc=False</em><span class="optional">[</span>, <em class="sig-param">timeout</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP_SSL" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>返回一个新的 <a class="reference internal" href="#nntplib.NNTP_SSL" title="nntplib.NNTP_SSL"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP_SSL</span></code></a> 对象,代表一个对运行于主机 <em>host</em>,在端口 <em>port</em> 上监听的 NNTP 服务器的连接。 <a class="reference internal" href="#nntplib.NNTP_SSL" title="nntplib.NNTP_SSL"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP_SSL</span></code></a> 对象具有与 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 对象相同的方法。 如果 <em>port</em> 被省略,则会使用端口 563 (NNTPS)。 <em>ssl_context</em> 也是可选的,且为一个 <a class="reference internal" href="ssl.html#ssl.SSLContext" title="ssl.SSLContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">SSLContext</span></code></a> 对象。 请阅读 <a class="reference internal" href="ssl.html#ssl-security"><span class="std std-ref">安全考量</span></a> 来了解最佳实践。 所有其他形参的行为都与 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 的相同。</p>
|
||
<p>请注意 <span class="target" id="index-22"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc4642.html"><strong>RFC 4642</strong></a> 不再推荐使用 563 端口的 SSL,建议改用下文描述的 STARTTLS。 但是,某些服务器只支持前者。</p>
|
||
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">nntplib.connect</span></code> 附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">host</span></code>, <code class="docutils literal notranslate"><span class="pre">port</span></code>。</p>
|
||
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">nntplib.putline</span></code>,附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">line</span></code>。</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.4 版更改: </span>本类现在支持通过 <a class="reference internal" href="ssl.html#ssl.SSLContext.check_hostname" title="ssl.SSLContext.check_hostname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ssl.SSLContext.check_hostname</span></code></a> 和 <em>服务器名称提示</em> (参阅 <a class="reference internal" href="ssl.html#ssl.HAS_SNI" title="ssl.HAS_SNI"><code class="xref py py-data docutils literal notranslate"><span class="pre">ssl.HAS_SNI</span></code></a>)进行主机名检查。</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPError</code><a class="headerlink" href="#nntplib.NNTPError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>派生自标准异常 <a class="reference internal" href="exceptions.html#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a>,这是 <a class="reference internal" href="#module-nntplib" title="nntplib: NNTP protocol client (requires sockets)."><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code></a> 模块中引发的所有异常的基类。 该类的实例具有以下属性:</p>
|
||
<dl class="attribute">
|
||
<dt id="nntplib.NNTPError.response">
|
||
<code class="sig-name descname">response</code><a class="headerlink" href="#nntplib.NNTPError.response" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>可用的服务器响应,为一 <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> 对象。</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPReplyError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPReplyError</code><a class="headerlink" href="#nntplib.NNTPReplyError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>从服务器收到意外答复时,将引发本异常。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPTemporaryError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPTemporaryError</code><a class="headerlink" href="#nntplib.NNTPTemporaryError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>收到 400--499 范围内的响应代码时所引发的异常。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPPermanentError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPPermanentError</code><a class="headerlink" href="#nntplib.NNTPPermanentError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>收到 500--599 范围内的响应代码时所引发的异常。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPProtocolError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPProtocolError</code><a class="headerlink" href="#nntplib.NNTPProtocolError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>当从服务器收到不是以数字 1--5 开头的答复时所引发的异常。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="exception">
|
||
<dt id="nntplib.NNTPDataError">
|
||
<em class="property">exception </em><code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">NNTPDataError</code><a class="headerlink" href="#nntplib.NNTPDataError" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>当响应数据中存在错误时所引发的异常。</p>
|
||
</dd></dl>
|
||
|
||
<section id="nntp-objects">
|
||
<span id="id1"></span><h2>NNTP 对象<a class="headerlink" href="#nntp-objects" title="永久链接至标题">¶</a></h2>
|
||
<p>当连接时,<a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 和 <a class="reference internal" href="#nntplib.NNTP_SSL" title="nntplib.NNTP_SSL"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP_SSL</span></code></a> 对象支持以下方法和属性。</p>
|
||
<section id="attributes">
|
||
<h3>属性<a class="headerlink" href="#attributes" title="永久链接至标题">¶</a></h3>
|
||
<dl class="attribute">
|
||
<dt id="nntplib.NNTP.nntp_version">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">nntp_version</code><a class="headerlink" href="#nntplib.NNTP.nntp_version" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>代表服务器所支持的 NNTP 协议版本的整数。 在实践中,这对声明遵循 <span class="target" id="index-23"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3977.html"><strong>RFC 3977</strong></a> 的服务器应为 <code class="docutils literal notranslate"><span class="pre">2</span></code> 而对其他服务器则为 <code class="docutils literal notranslate"><span class="pre">1</span></code>。</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="attribute">
|
||
<dt id="nntplib.NNTP.nntp_implementation">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">nntp_implementation</code><a class="headerlink" href="#nntplib.NNTP.nntp_implementation" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>描述 NNTP 服务器软件名称和版本的字符串,如果服务器未声明此信息则为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a>。</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="methods">
|
||
<h3>方法<a class="headerlink" href="#methods" title="永久链接至标题">¶</a></h3>
|
||
<p>作为几乎全部方法所返回元组的第一项返回的 <em>response</em> 是服务器的响应:以三位数字代码打头的字符串。 如果服务器的响应是提示错误,则方法将引发上述异常之一。</p>
|
||
<p>以下方法中许多都接受一个可选的仅限关键字参数 <em>file</em>。 当提供了 <em>file</em> 参数时,它必须为打开用于二进制写入的 <a class="reference internal" href="../glossary.html#term-file-object"><span class="xref std std-term">file object</span></a>,或要写入的磁盘文件名称。 此类方法随后将把服务器返回的任意数据(除了响应行和表示结束的点号)写入到文件中;此类方法通常返回的任何行列表、元组或对象都将为空值。</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.2 版更改: </span>以下方法中许多都已被重写和修正,这使得它们不再与 3.1 中的同名方法相兼容。</p>
|
||
</div>
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.quit">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">quit</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.quit" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">QUIT</span></code> 命令并关闭连接。 一旦此方法被调用,NNTP 对象的其他方法都不应再被调用。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.getwelcome">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">getwelcome</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.getwelcome" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>返回服务器发送的欢迎消息,作为连接开始的回复。(该消息有时包含与用户有关的免责声明或帮助信息。)</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.getcapabilities">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">getcapabilities</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.getcapabilities" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>返回服务器所声明的 <span class="target" id="index-24"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3977.html"><strong>RFC 3977</strong></a> 功能,其形式为将功能名称映射到(可能为空的)值列表的 <a class="reference internal" href="stdtypes.html#dict" title="dict"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a> 实例。 在不能识别 <code class="docutils literal notranslate"><span class="pre">CAPABILITIES</span></code> 命令的旧式服务器上,会返回一个空字典。</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">NNTP</span><span class="p">(</span><span class="s1">'news.gmane.io'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="s1">'POST'</span> <span class="ow">in</span> <span class="n">s</span><span class="o">.</span><span class="n">getcapabilities</span><span class="p">()</span>
|
||
<span class="go">True</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.login">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">login</code><span class="sig-paren">(</span><em class="sig-param">user=None</em>, <em class="sig-param">password=None</em>, <em class="sig-param">usenetrc=True</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.login" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">AUTHINFO</span></code> 命令并附带用户名和密码。 如果 <em>user</em> 和 <em>password</em> 为 <code class="docutils literal notranslate"><span class="pre">None</span></code> 且 <em>usenetrc</em> 为真值,则会在可能的情况下使用来自 <code class="docutils literal notranslate"><span class="pre">~/.netrc</span></code> 的凭证。</p>
|
||
<p>除非被有意延迟,登录操作通常会在 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 对象初始化期间被执行因而没有必要单独调用此函数。 要强制延迟验证,你在创建该对象时不能设置 <em>user</em> 或 <em>password</em>,并必须将 <em>usenetrc</em> 设为 False。</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.starttls">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">starttls</code><span class="sig-paren">(</span><em class="sig-param">context=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.starttls" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">STARTTLS</span></code> 命令。 这将在 NNTP 连接上启用加密。 <em>context</em> 参数是可选的且应为 <a class="reference internal" href="ssl.html#ssl.SSLContext" title="ssl.SSLContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">ssl.SSLContext</span></code></a> 对象。 请阅读 <a class="reference internal" href="ssl.html#ssl-security"><span class="std std-ref">安全考量</span></a> 了解最佳实践。</p>
|
||
<p>请注意此操作可能不会在传输验证信息之后立即完成,只要有可能验证默认会在 <a class="reference internal" href="#nntplib.NNTP" title="nntplib.NNTP"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTP</span></code></a> 对象初始化期间发生。 请参阅 <a class="reference internal" href="#nntplib.NNTP.login" title="nntplib.NNTP.login"><code class="xref py py-meth docutils literal notranslate"><span class="pre">NNTP.login()</span></code></a> 了解有关如何屏蔽此行为的信息。</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.4 版更改: </span>此方法现在支持使用 <a class="reference internal" href="ssl.html#ssl.SSLContext.check_hostname" title="ssl.SSLContext.check_hostname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ssl.SSLContext.check_hostname</span></code></a> 和 <em>服务器名称指示</em> (参见 <a class="reference internal" href="ssl.html#ssl.HAS_SNI" title="ssl.HAS_SNI"><code class="xref py py-data docutils literal notranslate"><span class="pre">ssl.HAS_SNI</span></code></a>) 进行主机名检查。</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.newgroups">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">newgroups</code><span class="sig-paren">(</span><em class="sig-param">date</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.newgroups" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">NEWGROUPS</span></code> 命令。 <em>date</em> 参数应为 <a class="reference internal" href="datetime.html#datetime.date" title="datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.date</span></code></a> 或 <a class="reference internal" href="datetime.html#datetime.datetime" title="datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.datetime</span></code></a> 对象。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">groups)</span></code> 对,其中 <em>groups</em> 是代表给定i <em>date</em> 以来所新建的分组。 但是如果提供了 <em>file</em>,则 <em>groups</em> 将为空值。</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">date</span><span class="p">,</span> <span class="n">timedelta</span>
|
||
<span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">groups</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">newgroups</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">3</span><span class="p">))</span>
|
||
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">groups</span><span class="p">)</span>
|
||
<span class="go">85</span>
|
||
<span class="gp">>>> </span><span class="n">groups</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="go">GroupInfo(group='gmane.network.tor.devel', last='4', first='1', flag='m')</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.newnews">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">newnews</code><span class="sig-paren">(</span><em class="sig-param">group</em>, <em class="sig-param">date</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.newnews" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">NEWNEWS</span></code> 命令。 这里,<em>group</em> 是新闻组名称或为 <code class="docutils literal notranslate"><span class="pre">'*'</span></code>,而 <em>date</em> 与 <a class="reference internal" href="#nntplib.NNTP.newgroups" title="nntplib.NNTP.newgroups"><code class="xref py py-meth docutils literal notranslate"><span class="pre">newgroups()</span></code></a> 中的含义相同。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">articles)</span></code> 对,其中 <em>articles</em> 为消息 ID 列表。</p>
|
||
<p>此命令经常会被 NNTP 服务器管理员禁用。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.list">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">list</code><span class="sig-paren">(</span><em class="sig-param">group_pattern=None</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.list" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">LIST</span></code> 或 <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">ACTIVE</span></code> 命令。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">list)</span></code> 对,其中 <em>list</em> 是代表此 NNTP 服务器上所有可用新闻组的元组列表,并可选择匹配模式字符串 <em>group_pattern</em>。 每个元组的形式为 <code class="docutils literal notranslate"><span class="pre">(group,</span> <span class="pre">last,</span> <span class="pre">first,</span> <span class="pre">flag)</span></code>,其中 <em>group</em> 为新闻组名称,<em>last</em> 和 <em>first</em> 是最后一个和第一个文章的编号,而 <em>flag</em> 通常为下列值之一:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">y</span></code>: 允许来自对等方的本地发帖和文章。</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">m</span></code>: 新闻组受到管制因而所有发帖必须经过审核。</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">n</span></code>: 不允许本地发帖,只允许来自组员的文章。</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">j</span></code>: 来自组员的文章会被转入垃圾分组。</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">x</span></code>: 不允许本地发帖,而来自组员的文章会被忽略。</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">=foo.bar</span></code>: 文章会被转入 <code class="docutils literal notranslate"><span class="pre">foo.bar</span></code> 分组。</p></li>
|
||
</ul>
|
||
<p>如果 <em>flag</em> 具有其他值,则新闻组的状态应当被视为未知。</p>
|
||
<p>此命令可能返回非常庞大的结果,特别是当未指明 <em>group_pattern</em> 的时候。 最好是离线缓存其结果,除非你确实需要刷新它们。</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">在 3.2 版更改: </span>增加了 <em>group_pattern</em>。</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.descriptions">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">descriptions</code><span class="sig-paren">(</span><em class="sig-param">grouppattern</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.descriptions" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">NEWSGROUPS</span></code> 命令,其中 <em>grouppattern</em> 为 <span class="target" id="index-25"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3977.html"><strong>RFC 3977</strong></a> 中规定的 wildmat 字符串(它实际上与 DOS 或 UNIX shell 通配字符串相同)。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">descriptions)</span></code> 对,其中 <em>descriptions</em> 是将新闻组名称映射到文本描述的字典。</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">descs</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">descriptions</span><span class="p">(</span><span class="s1">'gmane.comp.python.*'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">descs</span><span class="p">)</span>
|
||
<span class="go">295</span>
|
||
<span class="gp">>>> </span><span class="n">descs</span><span class="o">.</span><span class="n">popitem</span><span class="p">()</span>
|
||
<span class="go">('gmane.comp.python.bio.general', 'BioPython discussion list (Moderated)')</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.description">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">description</code><span class="sig-paren">(</span><em class="sig-param">group</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.description" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>获取单个新闻组 <em>group</em> 的描述。 如果匹配到一个以上的新闻组(如果 'group' 是一个真实的 wildmat 字符串),则返回第一个匹配结果。 如果未匹配到任何新闻组,则返回空字符串。</p>
|
||
<p>此方法略去了来自服务器的响应代码。 如果需要响应代码,请使用 <a class="reference internal" href="#nntplib.NNTP.descriptions" title="nntplib.NNTP.descriptions"><code class="xref py py-meth docutils literal notranslate"><span class="pre">descriptions()</span></code></a>。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.group">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">group</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.group" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">GROUP</span></code> 命令,其中 <em>name</em> 为新闻组名称。 该新闻组如果存在,则会被选定为当前新闻组。 返回一个元组 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">count,</span> <span class="pre">first,</span> <span class="pre">last,</span> <span class="pre">name)</span></code>,其中 <em>count</em> 是该新闻组中(估计的)文章数量,<em>first</em> 是新闻组中第一篇文章的编号,<em>last</em> 是新闻组中最后一篇文章的编号,而 <em>name</em> 是新闻组名称。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.over">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">over</code><span class="sig-paren">(</span><em class="sig-param">message_spec</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.over" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">OVER</span></code> 命令,或是旧式服务器上的 <code class="docutils literal notranslate"><span class="pre">XOVER</span></code> 命令。 <em>message_spec</em> 可以是表示消息 ID 的字符串,或是指明当前新闻组内文章范围的数字元组 <code class="docutils literal notranslate"><span class="pre">(first,</span> <span class="pre">last)</span></code>,或是指明当前新闻组内从 <code class="docutils literal notranslate"><span class="pre">(first,</span> <span class="pre">None)</span></code> <em>first</em> 到最后一篇文章的元组,或者为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a> 表示选定当前新闻组内的当前文章。</p>
|
||
<p>返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">overviews)</span></code> 对。 其中 <em>overviews</em> 是一个包含 <code class="docutils literal notranslate"><span class="pre">(article_number,</span> <span class="pre">overview)</span></code> 元组的列表,每个元组对应 <em>message_spec</em> 所选定的一篇文章。 每个 <em>overview</em> 则是包含同样数量条目的字典,但具体数量取决于服务器。 这些条目或是为消息标头(对应键为小写的标头名称)或是为 metadata 项(对应键为以 <code class="docutils literal notranslate"><span class="pre">":"</span></code> 打头的 metadata 名称)。 以下条目会由 NNTP 规范描述来确保提供:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">subject</span></code>, <code class="docutils literal notranslate"><span class="pre">from</span></code>, <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">message-id</span></code> 和 <code class="docutils literal notranslate"><span class="pre">references</span></code> 标头</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">:bytes</span></code> metadata: 整个原始文章数据的字节数(包括标头和消息体)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">:lines</span></code> metadata: 文章消息体的行数</p></li>
|
||
</ul>
|
||
<p>每个条目的值或者为字符串,或者在没有值时为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a>。</p>
|
||
<p>建议在标头值可能包含非 ASCII 字符的时候对其使用 <a class="reference internal" href="#nntplib.decode_header" title="nntplib.decode_header"><code class="xref py py-func docutils literal notranslate"><span class="pre">decode_header()</span></code></a> 函数:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s1">'gmane.comp.python.devel'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">overviews</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">over</span><span class="p">((</span><span class="n">last</span><span class="p">,</span> <span class="n">last</span><span class="p">))</span>
|
||
<span class="gp">>>> </span><span class="n">art_num</span><span class="p">,</span> <span class="n">over</span> <span class="o">=</span> <span class="n">overviews</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="gp">>>> </span><span class="n">art_num</span>
|
||
<span class="go">117216</span>
|
||
<span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="n">over</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||
<span class="go">['xref', 'from', ':lines', ':bytes', 'references', 'date', 'message-id', 'subject']</span>
|
||
<span class="gp">>>> </span><span class="n">over</span><span class="p">[</span><span class="s1">'from'</span><span class="p">]</span>
|
||
<span class="go">'=?UTF-8?B?Ik1hcnRpbiB2LiBMw7Z3aXMi?= <martin@v.loewis.de>'</span>
|
||
<span class="gp">>>> </span><span class="n">nntplib</span><span class="o">.</span><span class="n">decode_header</span><span class="p">(</span><span class="n">over</span><span class="p">[</span><span class="s1">'from'</span><span class="p">])</span>
|
||
<span class="go">'"Martin v. Löwis" <martin@v.loewis.de>'</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">3.2 新版功能.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.help">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">help</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.help" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">HELP</span></code> 命令。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">list)</span></code> 对,其中 <em>list</em> 为帮助字符串列表。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.stat">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">stat</code><span class="sig-paren">(</span><em class="sig-param">message_spec=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.stat" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">STAT</span></code> 命令,其中 <em>message_spec</em> 为消息 ID (包裹在 <code class="docutils literal notranslate"><span class="pre">'<'</span></code> 和 <code class="docutils literal notranslate"><span class="pre">'>'</span></code> 中) 或者当前新闻组中的文章编号。 如果 <em>message_spec</em> 被省略或为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a>,则会选择当前新闻组中的当前文章。 反回一个三元组 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">number,</span> <span class="pre">id)</span></code>,其中 <em>number</em> 为文章编号而 <em>id</em> 为消息 ID。</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s1">'gmane.comp.python.devel'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">number</span><span class="p">,</span> <span class="n">message_id</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">first</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">number</span><span class="p">,</span> <span class="n">message_id</span>
|
||
<span class="go">(9099, '<20030112190404.GE29873@epoch.metaslash.com>')</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.next">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">next</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.next" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">NEXT</span></code> 命令。 返回与 <a class="reference internal" href="#nntplib.NNTP.stat" title="nntplib.NNTP.stat"><code class="xref py py-meth docutils literal notranslate"><span class="pre">stat()</span></code></a> 类似的结果。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.last">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">last</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.last" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">LAST</span></code> 命令。 返回与 <a class="reference internal" href="#nntplib.NNTP.stat" title="nntplib.NNTP.stat"><code class="xref py py-meth docutils literal notranslate"><span class="pre">stat()</span></code></a> 类似的结果。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.article">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">article</code><span class="sig-paren">(</span><em class="sig-param">message_spec=None</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.article" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">ARTICLE</span></code> 命令,其中 <em>message_spec</em> 的含义与 <a class="reference internal" href="#nntplib.NNTP.stat" title="nntplib.NNTP.stat"><code class="xref py py-meth docutils literal notranslate"><span class="pre">stat()</span></code></a> 中的相同。 返回一个元组 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">info)</span></code>,其中 <em>info</em> 是一个 <a class="reference internal" href="collections.html#collections.namedtuple" title="collections.namedtuple"><code class="xref py py-class docutils literal notranslate"><span class="pre">namedtuple</span></code></a>,包含三个属性 <em>number</em>, <em>message_id</em> 和 <em>lines</em> (按此顺序)。 <em>number</em> 是新闻组中的文章数量 (或者如果该信息不可用则为 0),<em>message_id</em> 为字符串形式的消息 ID,而 <em>lines</em> 为由包括标头和消息体的原始消息的行组成的列表 (不带末尾换行符)。</p>
|
||
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">resp</span><span class="p">,</span> <span class="n">info</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">article</span><span class="p">(</span><span class="s1">'<20030112190404.GE29873@epoch.metaslash.com>'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="n">info</span><span class="o">.</span><span class="n">number</span>
|
||
<span class="go">0</span>
|
||
<span class="gp">>>> </span><span class="n">info</span><span class="o">.</span><span class="n">message_id</span>
|
||
<span class="go">'<20030112190404.GE29873@epoch.metaslash.com>'</span>
|
||
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">info</span><span class="o">.</span><span class="n">lines</span><span class="p">)</span>
|
||
<span class="go">65</span>
|
||
<span class="gp">>>> </span><span class="n">info</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="go">b'Path: main.gmane.org!not-for-mail'</span>
|
||
<span class="gp">>>> </span><span class="n">info</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="go">b'From: Neal Norwitz <neal@metaslash.com>'</span>
|
||
<span class="gp">>>> </span><span class="n">info</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:]</span>
|
||
<span class="go">[b'There is a patch for 2.3 as well as 2.2.', b'', b'Neal']</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.head">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">head</code><span class="sig-paren">(</span><em class="sig-param">message_spec=None</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.head" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>与 <a class="reference internal" href="#nntplib.NNTP.article" title="nntplib.NNTP.article"><code class="xref py py-meth docutils literal notranslate"><span class="pre">article()</span></code></a> 类似,但会发送 <code class="docutils literal notranslate"><span class="pre">HEAD</span></code> 命令。 返回的 <em>lines</em> (或写入到 <em>file</em>) 将只包含消息标头,不包含消息体。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.body">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">body</code><span class="sig-paren">(</span><em class="sig-param">message_spec=None</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.body" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>与 <a class="reference internal" href="#nntplib.NNTP.article" title="nntplib.NNTP.article"><code class="xref py py-meth docutils literal notranslate"><span class="pre">article()</span></code></a> 类似,但会发送 <code class="docutils literal notranslate"><span class="pre">BODY</span></code> 命令。 返回的 <em>lines</em> (或写入到 <em>file</em>) 将只包含消息体,不包含标头。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.post">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">post</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.post" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>使用 <code class="docutils literal notranslate"><span class="pre">POST</span></code> 命令发布文章。 <em>data</em> 参数是以二进制读取模式打开的 <a class="reference internal" href="../glossary.html#term-file-object"><span class="xref std std-term">file object</span></a>,或是任意包含字节串对象的可迭代对象 (表示要发布的文章的原始行数据)。 它应当代表一篇适当格式的新闻组文章,包含所需的标头。 <a class="reference internal" href="#nntplib.NNTP.post" title="nntplib.NNTP.post"><code class="xref py py-meth docutils literal notranslate"><span class="pre">post()</span></code></a> 方法会自动对以 <code class="docutils literal notranslate"><span class="pre">.</span></code> 打头的行数据进行转义并添加结束行。</p>
|
||
<p>如果此方法执行成功,将返回服务器的响应。 如果服务器拒绝响应,则会引发 <a class="reference internal" href="#nntplib.NNTPReplyError" title="nntplib.NNTPReplyError"><code class="xref py py-class docutils literal notranslate"><span class="pre">NNTPReplyError</span></code></a>。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.ihave">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">ihave</code><span class="sig-paren">(</span><em class="sig-param">message_id</em>, <em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.ihave" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">IHAVE</span></code> 命令。 <em>message_id</em> 为要发给服务器的消息 ID (包裹在 <code class="docutils literal notranslate"><span class="pre">'<'</span></code> 和 <code class="docutils literal notranslate"><span class="pre">'>'</span></code> 中)。 <em>data</em> 形参和返回值与 <a class="reference internal" href="#nntplib.NNTP.post" title="nntplib.NNTP.post"><code class="xref py py-meth docutils literal notranslate"><span class="pre">post()</span></code></a> 的一致。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.date">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">date</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.date" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">date)</span></code> 对。 <em>date</em> 是包含服务器当前日期与时间的 <a class="reference internal" href="datetime.html#datetime.datetime" title="datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> 对象。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.slave">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">slave</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.slave" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">SLAVE</span></code> 命令。 返回服务器的 <em>响应</em>。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.set_debuglevel">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">set_debuglevel</code><span class="sig-paren">(</span><em class="sig-param">level</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.set_debuglevel" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>设置实例的调试级别。 它控制着打印调试输出信息的数量。 默认值 <code class="docutils literal notranslate"><span class="pre">0</span></code> 不产生调试输出。 值 <code class="docutils literal notranslate"><span class="pre">1</span></code> 产生中等数量的调试输出,通常每个请求或响应各产生一行。 大于等于 <code class="docutils literal notranslate"><span class="pre">2</span></code> 的值产生最多的调试输出,在连接上发送和接收的每一行信息都会被记录下来(包括消息文本)。</p>
|
||
</dd></dl>
|
||
|
||
<p>以下是在 <span class="target" id="index-26"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2980.html"><strong>RFC 2980</strong></a> 中定义的可选 NNTP 扩展。 其中一些已被 <span class="target" id="index-27"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3977.html"><strong>RFC 3977</strong></a> 中的新命令所取代。</p>
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.xhdr">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">xhdr</code><span class="sig-paren">(</span><em class="sig-param">hdr</em>, <em class="sig-param">str</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.xhdr" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">XHDR</span></code> 命令。 <em>hdr</em> 参数是标头关键字,例如 <code class="docutils literal notranslate"><span class="pre">'subject'</span></code>。 <em>str</em> 参数的形式应为 <code class="docutils literal notranslate"><span class="pre">'first-last'</span></code>,其中 <em>first</em> 和 <em>last</em> 是要搜索的首篇和末篇文章编号。 返回一个 <code class="docutils literal notranslate"><span class="pre">(response,</span> <span class="pre">list)</span></code> 对,其中 <em>list</em> 是 <code class="docutils literal notranslate"><span class="pre">(id,</span> <span class="pre">text)</span></code> 对的列表,其中 <em>id</em> 是文章编号(字符串类型)而 <em>text</em> 是该文章的请求标头。 如果提供了 <em>file</em> 形参,则 <code class="docutils literal notranslate"><span class="pre">XHDR</span></code> 命令的输出会保存到文件中。 如果 <em>file</em> 为字符串,则此方法将打开指定名称的文件,向其写入内容并将其关闭。 如果 <em>file</em> 为 <a class="reference internal" href="../glossary.html#term-file-object"><span class="xref std std-term">file object</span></a>,则将在该文件对象上调用 <code class="xref py py-meth docutils literal notranslate"><span class="pre">write()</span></code> 方法来保存命令所输出的行信息。 如果提供了 <em>file</em>,则返回的 <em>list</em> 将为空列表。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.xover">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">xover</code><span class="sig-paren">(</span><em class="sig-param">start</em>, <em class="sig-param">end</em>, <em class="sig-param">*</em>, <em class="sig-param">file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.xover" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>发送 <code class="docutils literal notranslate"><span class="pre">XOVER</span></code> 命令。 <em>start</em> 和 <em>end</em> 是限制所选取文章范围的文章编号。 返回值与 <a class="reference internal" href="#nntplib.NNTP.over" title="nntplib.NNTP.over"><code class="xref py py-meth docutils literal notranslate"><span class="pre">over()</span></code></a> 的相同。 推荐改用 <a class="reference internal" href="#nntplib.NNTP.over" title="nntplib.NNTP.over"><code class="xref py py-meth docutils literal notranslate"><span class="pre">over()</span></code></a>,因为它将在可能的情况下自动使用更新的 <code class="docutils literal notranslate"><span class="pre">OVER</span></code> 命令。</p>
|
||
</dd></dl>
|
||
|
||
<dl class="method">
|
||
<dt id="nntplib.NNTP.xpath">
|
||
<code class="sig-prename descclassname">NNTP.</code><code class="sig-name descname">xpath</code><span class="sig-paren">(</span><em class="sig-param">id</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.NNTP.xpath" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>Return a pair <code class="docutils literal notranslate"><span class="pre">(resp,</span> <span class="pre">path)</span></code>, where <em>path</em> is the directory path to the
|
||
article with message ID <em>id</em>. Most of the time, this extension is not
|
||
enabled by NNTP server administrators.</p>
|
||
<div class="deprecated">
|
||
<p><span class="versionmodified deprecated">3.3 版后已移除: </span>The XPATH extension is not actively used.</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
</section>
|
||
<section id="utility-functions">
|
||
<h2>工具函数<a class="headerlink" href="#utility-functions" title="永久链接至标题">¶</a></h2>
|
||
<p>这个模块还定义了下列工具函数:</p>
|
||
<dl class="function">
|
||
<dt id="nntplib.decode_header">
|
||
<code class="sig-prename descclassname">nntplib.</code><code class="sig-name descname">decode_header</code><span class="sig-paren">(</span><em class="sig-param">header_str</em><span class="sig-paren">)</span><a class="headerlink" href="#nntplib.decode_header" title="永久链接至目标">¶</a></dt>
|
||
<dd><p>解码标头值,恢复任何被转义的非 ASCII 字符。 <em>header_str</em> 必须为 <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> 对象。 将返回被恢复的值。 推荐使用此函数来以人类可读的形式显示某些标头:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">decode_header</span><span class="p">(</span><span class="s2">"Some subject"</span><span class="p">)</span>
|
||
<span class="go">'Some subject'</span>
|
||
<span class="gp">>>> </span><span class="n">decode_header</span><span class="p">(</span><span class="s2">"=?ISO-8859-15?Q?D=E9buter_en_Python?="</span><span class="p">)</span>
|
||
<span class="go">'Débuter en Python'</span>
|
||
<span class="gp">>>> </span><span class="n">decode_header</span><span class="p">(</span><span class="s2">"Re: =?UTF-8?B?cHJvYmzDqG1lIGRlIG1hdHJpY2U=?="</span><span class="p">)</span>
|
||
<span class="go">'Re: problème de matrice'</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||
<div class="sphinxsidebarwrapper">
|
||
<h3><a href="../contents.html">目录</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code> --- NNTP 协议客户端</a><ul>
|
||
<li><a class="reference internal" href="#nntp-objects">NNTP 对象</a><ul>
|
||
<li><a class="reference internal" href="#attributes">属性</a></li>
|
||
<li><a class="reference internal" href="#methods">方法</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#utility-functions">工具函数</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>上一个主题</h4>
|
||
<p class="topless"><a href="imaplib.html"
|
||
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">imaplib</span></code> --- IMAP4 协议客户端</a></p>
|
||
<h4>下一个主题</h4>
|
||
<p class="topless"><a href="smtplib.html"
|
||
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">smtplib</span></code> --- SMTP 协议客户端</a></p>
|
||
<div role="note" aria-label="source link">
|
||
<h3>本页</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="../bugs.html">报告 Bug</a></li>
|
||
<li>
|
||
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/nntplib.rst"
|
||
rel="nofollow">显示源代码
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<h3>导航</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="../genindex.html" title="总目录"
|
||
>索引</a></li>
|
||
<li class="right" >
|
||
<a href="../py-modindex.html" title="Python 模块索引"
|
||
>模块</a> |</li>
|
||
<li class="right" >
|
||
<a href="smtplib.html" title="smtplib --- SMTP 协议客户端"
|
||
>下一页</a> |</li>
|
||
<li class="right" >
|
||
<a href="imaplib.html" title="imaplib --- IMAP4 协议客户端"
|
||
>上一页</a> |</li>
|
||
|
||
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li class="switchers">
|
||
<div class="language_switcher_placeholder"></div>
|
||
<div class="version_switcher_placeholder"></div>
|
||
</li>
|
||
<li>
|
||
|
||
</li>
|
||
<li id="cpython-language-and-version">
|
||
<a href="../index.html">3.8.20 Documentation</a> »
|
||
</li>
|
||
|
||
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> »</li>
|
||
<li class="nav-item nav-item-2"><a href="internet.html" >互联网协议和支持</a> »</li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" role="search">
|
||
<form class="inline-search" action="../search.html" method="get">
|
||
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
|
||
<input type="submit" value="转向" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
|
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="footer">
|
||
© <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
|
||
<br />
|
||
This page is licensed under the Python Software Foundation License Version 2.
|
||
<br />
|
||
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||
<br />
|
||
|
||
<br />
|
||
|
||
The Python Software Foundation is a non-profit corporation.
|
||
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||
<br />
|
||
<br />
|
||
|
||
最后更新于 12月 09, 2024.
|
||
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
|
||
<br />
|
||
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
|
||
</div>
|
||
|
||
</body>
|
||
</html> |