nntplib
源代码: Lib / nntplib.py
该模块定义了NNTP
实现NNTP协议客户端的类。它可以用来实现新闻阅读器或海报,或自动新闻处理器。有关NNTP(网络新闻传输协议)的更多信息,请参阅Internet 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 USER
and AUTHINFO PASS
命令来标识和验证服务器的用户。如果可选标志readermode为true,那么amode reader
命令在执行认证之前发送。如果您连接到本地计算机上的NNTP服务器并且打算调用特定于阅读器的命令(例如,),则有时需要阅读器模式group
。如果你意想不到NNTPPermanentError
的话,你可能需要设置readermode。readermode默认为None
。usenetrc默认为True
。
在版本2.4中更改:添加了usenetrc参数。
exception nntplib.NNTPError
从标准异常派生Exception
,这是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
相当于这个类。
1. NNTP对象
NNTP实例具有以下方法。该响应被返回的几乎所有方法的返回元组的第一项是服务器的响应:一个字符串开头的三位数代码。如果服务器的响应表明有错误,则该方法引发上述例外之一。
NNTP.getwelcome()
返回服务器发送的回复初始连接的欢迎消息。(此消息有时包含可能与用户有关的免责声明或帮助信息。)
NNTP.set_debuglevel(level)
设置实例的调试级别。这将控制打印的调试输出量。缺省值,0
不会产生调试输出。值1
会产生适量的调试输出,通常每个请求或响应只有一行。值2
或更高值会产生最大数量的调试输出,记录连接上发送和接收的每条线路(包括消息文本)。
NNTP.newgroups(date, time[, file])
发送一个NEWGROUPS
命令。该日期参数应该是以下形式的字符串'yymmdd'
指示日期和时间的格式应的字符串'hhmmss'
表示的时间。返回组合对(response, groups)
,其中组是自给定日期和时间以来新增的组名列表。如果提供了文件参数,则NEWGROUPS
命令的输出将存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回列表是一个空列表。
NNTP.newnews(group, date, time[, file])
发送一个NEWNEWS
命令。在这里,组是一个组名,或者'*'
,日期和时间的含义与此相同newgroups()
。返回一对邮件(response, articles)
,其中articles是邮件ID列表。如果提供了文件参数,则NEWNEWS
命令的输出将存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。
NNTP.list([file])
发送一个LIST
命令。返回一对(response, list)
,其中列表是元组列表。每个元组的形式(group, last, first, flag)
,其中组是一组名,最后和第一是最后和第一篇文章的数字(如字符串),和标志是'y'
,如果帖子是允许的,'n'
如果不是,'m'
如果新闻组主持。(注意排序:最后,第一个)。如果提供了文件参数,那么LIST
命令的输出存储在一个文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果文件是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。
NNTP.descriptions(grouppattern)
发送LIST NEWSGROUPS
命令,其中grouppattern是RFC2980中指定的wildmat字符串(它基本上与DOS或UNIX shell通配符字符串相同)。返回一个pair (response, list)
,其中list是包含的元组列表(name, title)
。
2.4版本中的新功能。
NNTP.description(group)
获取一个组的描述组。如果多个组匹配(如果“组”是真正的自变量字符串),则返回第一个匹配。如果没有组匹配,则返回一个空字符串。
这消除了来自服务器的响应代码。如果需要回应代码,请使用descriptions()
。
2.4版本中的新功能。
NNTP.group(name)
发送一个GROUP
命令,其中name是组名称。返回一个元组(response, count, first, last, name)
,其中count是组中的(估计)数量的文章,首先是组中的第一个文章编号,last是组中的最后一个文章编号,name是组名称。数字以字符串形式返回。
NNTP.help([file])
发送一个HELP
命令。返回一对(response, list)
,其中列表是帮助字符串的列表。如果提供了文件参数,则HELP
命令的输出将存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。
NNTP.stat(id)
发送一个STAT
命令,其中id是消息ID(用'<'
and 括起来'>'
)或商品编号(作为字符串)。返回一个triple (response, number, id)
,其中number是商品编号(作为字符串),id是消息ID(用'<'
和括起来'>'
)。
NNTP.next()
发送一个NEXT
命令。返回stat()
。
NNTP.last()
发送一个LAST
命令。返回stat()
。
NNTP.head(id)
发送一个HEAD
命令,其中id的含义与以前相同stat()
。返回一个元组(response, number, id, list)
,其中前三个元素与for相同stat()
,list是文章标题列表(一个没有解释的行列表,没有尾随换行符)。
NNTP.body(id[, file])
发送一个BODY
命令,其中id的含义与以前相同stat()
。如果提供了文件参数,则主体存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果文件是一个文件对象,那么它将开始调用write()
它来存储正文的行。返回head()
。如果提供了文件,则返回的列表是一个空列表。
NNTP.article(id)
发送一个ARTICLE
命令,其中id的含义与以前相同stat()
。返回head()
。
NNTP.slave()
发送一个SLAVE
命令。返回服务器的响应。
NNTP.xhdr(header, string[, file])
发送XHDR
命令。该命令没有在RFC中定义,但是是一个常见的扩展。的报头参数是一个报头的关键字,例如'subject'
。该字符串参数应具有的形式'first-last'
,其中第一和最后一个是第一个和最后的文章编号,以搜索。返回一对(response, list)
,其中list是对的列表(id, text)
,其中id是商品编号(作为字符串),text是该文章请求的标题的文本。如果提供了文件参数,则XHDR
命令的输出将存储在文件中。如果文件是一个字符串,然后该方法将打开一个名称为文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。
NNTP.post(file)
使用该POST
命令发布文章。的文件参数是其使用其读直至EOF一个打开的文件对象readline()
的方法。它应该是一篇格式良好的新闻文章,包括必需的标题。该post()
方法自动转义以.
。开头的行。
NNTP.ihave(id, file)
发送IHAVE
命令。ID是一个消息ID(包含在'<'
和'>'
)。如果响应不是错误,请按照该方法处理文件post()
。
NNTP.date()
返回一个三元组(response, date, time)
,其中包含当前日期和时间以适合于newnews()
和newgroups()
方法的形式。这是一个可选的NNTP扩展,并且可能不被所有服务器支持。
NNTP.xgtitle(name[, file])
处理一个XGTITLE
命令,返回一个对(response, list)
,其中list是包含的元组列表(name, title)
。如果提供了文件参数,则XGTITLE
命令的输出将存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。这是一个可选的NNTP扩展,并且可能不被所有服务器支持。
RFC2980表示“建议不要使用此扩展名”。使用descriptions()
或description()
替代。
NNTP.xover(start, end[, file])
返回一对(resp, list)
。列表是一个元组列表,其中一个用于由开始和结束文章编号分隔的范围中的每篇文章。每个元组都是这种形式(article number, subject, poster, date, id, references, size, lines)
。如果提供了文件参数,则XOVER
命令的输出将存储在文件中。如果file是一个字符串,那么该方法将打开一个具有该名称的文件对象,写入并关闭它。如果file是一个文件对象,那么它将开始调用write()
它来存储命令输出的行。如果提供了文件,则返回的列表是一个空列表。这是一个可选的NNTP扩展,并且可能不被所有服务器支持。
NNTP.xpath(id)
返回一个对(resp, path)
,其中path是具有消息ID 标识的文章的目录路径。这是一个可选的NNTP扩展,并且可能不被所有服务器支持。
NNTP.quit()
发送一个QUIT
命令并关闭连接。一旦调用了这个方法,就不应该调用NNTP对象的其他方法。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com