NNTP protocol clientnntplib

源程序代码:Lib/nntplib.py


本模块定义了类NNTP实现 NNTP 协议的客户端。它可以用于实现新闻阅读器或海报,或自动消息处理器。有关 NNTP (网络新闻传输协议) 的详细信息,请参阅互联网 RFC 977

这里有两个简单的例子来说明其使用。列出一些有关新闻组的统计信息和打印最后 10 篇文章的主题:

>>> s = NNTP('news.gmane.org')
>>> resp, count, first, last, name = s.group('gmane.comp.python.committers')
>>> print 'Group', name, 'has', count, 'articles, range', first, 'to', last
Group gmane.comp.python.committers has 1071 articles, range 1 to 1071
>>> resp, subs = s.xhdr('subject', first + '-' + last)
>>> for id, sub in subs[-10:]: print id, sub
...
1062 Re: Mercurial Status?
1063 Re: [python-committers]  (Windows) buildbots on 3.x
1064 Re: Mercurial Status?
1065 Re: Mercurial Status?
1066 Python 2.6.6 status
1067 Commit Privileges for Ask Solem
1068 Re: Commit Privileges for Ask Solem
1069 Re: Commit Privileges for Ask Solem
1070 Re: Commit Privileges for Ask Solem
1071 2.6.6 rc 2
>>> s.quit()
'205 Bye!'

要从文件 (这假定这篇文章有有效的标题,并且您有权在特定的新闻组上发布) 发布一篇文章:

>>> s = NNTP('news.gmane.org')
>>> f = open('articlefile')
>>> s.post(f)
'240 Article posted successfully.'
>>> s.quit()
'205 Bye!'

模块本身定义以下各项:

class nntplib.NNTP(host[, port [, user[, password [, readermode] [, usenetrc]]]])

返回表示一个连接到 NNTP 服务器运行在主机主机上,监听端口端口NNTP类的新实例。默认端口是 119。如果提供了可选的用户密码,或者如果适当凭据目前在/.netrc和可选的标记usenetrc是 true (默认值)、 AUTHINFO 用户AUTHINFO 传递命令用来识别和验证到服务器的用户。如果可选标志readermode为 true,然后将模式读取器命令发送之前执行身份验证。阅读器模式有时是必要的如果你连接到本地计算机上的 NNTP 服务器,并打算打电话给读者特定的命令,例如如果你得到意想不到的NNTPPermanentErrors,您可能需要设置readermodereadermode默认为Noneusenetrc默认值为True

2.4 版本中的更改:usenetrc参数添加。

exception nntplib.NNTPError

从标准的异常的异常派生的这是由nntplib模块引发的所有异常的基类。

exception nntplib.NNTPReplyError

从服务器收到意外的答复时引发的异常。为向后兼容性,异常error_reply等同于此类。

exception nntplib.NNTPTemporaryError

当接收到错误代码范围 400-499 中的时,将引发异常。为向后兼容性,异常error_temp等同于此类。

exception nntplib.NNTPPermanentError

当接收到错误代码在 500 — — 599 范围时,将引发异常。为向后兼容性,异常error_perm等同于此类。

exception nntplib.NNTPProtocolError

不是以一个数字范围 1-5 中开头的服务器收到答复时引发的异常。为向后兼容性,异常error_proto等同于此类。

exception nntplib.NNTPDataError

在响应数据中有一些错误时引发的异常。为向后兼容性,异常error_data等同于此类。

20.11.1. NNTP Objects

NNTP 实例具有下列方法。作为几乎所有方法中返回元组的第一项是服务器的响应返回的响应: 一个三位数代码开头的字符串。如果该服务器响应指示一个错误,该方法将引发上述例外之一。

NNTP.getwelcome()

返回由回答在初始连接时服务器发送的欢迎消息。(此消息有时包含免责声明或帮助可能是与用户相关的信息。

NNTP.set_debuglevel(level)

设置该实例的调试级别。此参数控制调试输出打印的量。默认情况下, 0,不生成任何调试输出。值为1产生适量的调试输出,一般每个请求或响应的单个行。 2或更高的值会生成调试输出,日志记录 (包括消息文本) 的连接上发送和接收的每一行的最大量。

NNTP.newgroups(date, time[, file])

发送一个放置命令。日期参数应该是一个字符串的形式'yymmdd'指示日期和时间应该一个字符串的形式'小时分秒'指示时间。返回一双(响应, 组) 在哪里是新自给定的日期和时间的组名称的列表。如果提供文件参数,然后放置命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。

NNTP.newnews(group, date, time[, file])

发送一个NEWNEWS命令。在这里,是一个组名称或' *',以及日期时间具有相同的含义,至于newgroups()返回一双(响应, 文章) 的文章在哪里的消息 id 列表。如果提供文件参数,然后NEWNEWS命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。

NNTP.list([file])

发送列表命令。返回对(响应, 列表) 列表在哪里的元组的列表。每个元组具有形式(组, 去年, 第一, 旗)、 地方是组名称、姓氏名字的最后一个也是第一篇文章编号 (如字符串),和标志'y' ,如果允许过帐, n如果不是,和我 '如果主持了该新闻组。(请注意排序:最后第一次。)如果提供文件参数,然后列表命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。

NNTP.descriptions(grouppattern)

发送新闻组列表中的命令,其中grouppattern是 wildmat 字符串作为指定的 RFC2980 (它本质上是 DOS 或 UNIX 外壳通配符字符串相同)。返回一双(响应, 列表),其中列表是一个列表的元组包含(名称, 标题)

在 2.4 版本新。

NNTP.description(group)

获取单个组的说明。如果多个组相匹配 (如果 '小组' 是一个真正的 wildmat 字符串),返回第一个匹配项。如果没有组匹配,则返回一个空字符串。

这略去来自服务器的响应代码。如果所需的响应代码,请使用descriptions()

在 2.4 版本新。

NNTP.group(name)

发送一命令,其中名称是组名称。返回一个元组(响应, 张, 第一, 最后, 名称)在哪里计数是组中的文章 (预估) 数目、第一次是组中的第一个文章编号、最后是组中,最后文章编号和名称是组名称。这些数字将作为字符串返回。

NNTP.help([file])

发送一个帮助命令。返回对(响应, 列表) 列表在哪里的帮助字符串列表。如果提供文件参数,然后帮助命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。

NNTP.stat(id)

发送一条STAT命令id在哪里的消息 id (括在'<'' >') 或文章编号 (以字符串的形式)。返回三(响应, id)其中是文章编号 (如字符串), id是消息 id (括在'<'' >')。

NNTP.next()

发送下一个命令。至于stat ()返回。

NNTP.last()

发送一个最后的命令。至于stat ()返回。

NNTP.head(id)

发送一条命令id有相同的含义,至于stat ()返回一个元组(响应, id、 列表)在那里头三项相同的stat (),而列表是这篇文章的标题 (没有尾随换行符的行未解释的列表) 的列表。

NNTP.body(id[, file])

发送一条身体命令id有相同的含义,至于stat ()如果提供文件参数,然后身体存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,就会调用write ()来存储体的行了。至于head()返回。如果提供了文件,则返回的列表是一个空列表。

NNTP.article(id)

发送一命令,在那里id具有相同的含义,至于stat ()至于head()返回。

NNTP.slave()

发送一个奴隶的命令。返回服务器的响应

NNTP.xhdr(header, string[, file])

发送XHDR命令。此命令在 RFC 中没有定义,而是一个常见的扩展。标头参数是一个标头的关键字,例如'主题'字符串参数应该有形式'第一个-最后一个' 第一最后一个都是第一个和最后一个的文章编号,以查看。返回一双(响应, 列表),其中列表是一个配对列表(id, 文本)id是文章编号 (以字符串的形式),而文本是那篇文章的请求标头的文本。如果提供文件参数,然后XHDR命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。

NNTP.post(file)

后一篇文章使用POST命令。文件参数是读取直到 EOF 使用其readline ()方法打开的文件对象。它应该是一个格式良好的新闻文章,包括所需的头文件。 Post()方法自动转义以.开头的行。

NNTP.ihave(id, file)

发送的命令。id是一个消息 id (括在'<'' >')。如果响应不是一个错误,对待文件确切地作为post()方法。

NNTP.date()

返回三(响应, 日期, 时间),包含的当前日期和时间的一种形式适合的newnews()newgroups()的方法。这是一个可选的 NNTP 扩展,并由所有服务器可能不支持。

NNTP.xgtitle(name[, file])

处理XGTITLE命令,返回一双(响应, 列表),其中列表是一个列表的元组包含(名称, 标题)如果提供文件参数,然后XGTITLE命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。这是一个可选的 NNTP 扩展,并由所有服务器可能不支持。

RFC2980 说,"它建议此扩展会弃用"。使用descriptions()description()

NNTP.xover(start, end[, file])

返回对(resp, 列表)列表是元组的列表,另一个用于每个范围中的文章分隔的开始结束的文章编号。每个元组是窗体的(文章主题, 海报, 日期, id, 引用, 大小, 线)如果提供文件参数,然后命令的输出存储在一个文件中。如果文件是一个字符串,该方法将以该名称打开一个文件对象,向其中写入然后关闭它。如果文件是一个文件对象,然后它将启动它来存储命令输出的行调用write () 如果提供了文件,则返回的列表是一个空列表。这是一个可选的 NNTP 扩展,并由所有服务器可能不支持。

NNTP.xpath(id)

返回一双(resp, 路径),其中路径是指向消息 ID id的文章的目录路径。这是一个可选的 NNTP 扩展,并由所有服务器可能不支持。

NNTP.quit()

发送QUIT命令和关闭连接。一旦调用了此方法,则应调用的 NNTP 对象的其他方法都不。