自动化测试

当前位置:首页 > 自动化测试

《Python 核心编程 》(第二版)第一部分 Python 核心 第十七章 续

17.3.6客户端程序NNTP举例

在NNTP客户端例子中,我们来点更复杂的。在之前的FTP客户端例子中,我们是下载最新的文件,这一次,我们要下载Python 语言新闻组com.lang.python 里的最后一篇文章。下载完成后,我们会显示文章的前20行,而且是前20行有意义的内容。有意义的内容是指那些不是被引用的文本(引用以“>”或“|”开头),也不是像这样的文本“In article <. . >, soAndSo@some.domain wrote:".

最后,我们要智能地处理空行。在文章中出现了- -行空行, 那我们就显示- -行空行,但如果有多行连续的空行,那只显示一行空行。只有有数据的行才算在“前20行”之中。所以,最多可能显示39行输出,20行实际数据间隔了19 行空行。

如果脚本的运行正常的话,我们可能会看到这样的输出:

$ getLatestNNTP.pY

***Connected to host "your 。nntp. server"

*** Found newsgroup "comp. lang. python"

***Found last article (4471526):

From: "Gerard Flanagan" <grflanagan0...>

Subject: Re: Generate a sequence of random numbers that sum up to 1?

Date: sat Apr 22 10:48:20 CEST 2006 .

**First (<= 20) meaningful lines:

def partition (N=5):

vals = sorted( random.random() for . in range(2*N) )

vals=[0]+vals+[1]

for」in range (2*N+1):

yield vals[j:+2]

deltas - [ x[1]-x[0] for x in partition() ]

print de1tas

print sum (deltas)

[0.10271966686994982,0. 1382 6576491042208,0. 06414 6913555132801,

0.11906452454467387,0. 10501198456091299,0. 0117324238307 68779,

0.11785369256442912,0. 065927165520102249,0. 098351305878176198,

0. 077786747076205365,0. 099139810689226726]

1.0

$

这个脚本下载并显示Python新闻组comp.lang.python最后一篇文章的前 20个“有意义的”行。

1 !/usr/bin/env python

2

3 import nntplib

4import socket

5H0ST= 'your 。nntp. server !

7GRNM= ' comp . lang。python

8USER= 'wesley

9PASS= "you' 1NeverGuess"

10

11 def main() :

12

13try

14n - nntplib. NNTP (HOST)

15#,user-USER, password-PAss,

16except soket. gaierror, e:

17print 'ERROR: cannot reach host "8g"' %HOST

18print,("&s")' %&eval (str(e))[1]

19return

20except nntplib. NNTPPe rmanentError, e:

21print 'ERROR: access denied on "9g"' %HOST .

22print ("9s")'告str (e)

23return

24print 1*** Connected to host "8s"' %HOST

25

26try:

27rsp,ct, fst, 1st, gIp = n.group (GRNM)

28except nntp1 ib . NNTPTemporaryError, e:

29print 'ERROR: cannot load group "8s"' %GRNM

30print("g")'%&str(e)

31print ' .Server may require authentication '

32printUncomment/edit login line above '

33n. quit ()

34return

35except nntplib . NNTPTemporaryError, e:

36print 'ERROR: group "8日” unavai1able' 8 GRNM

37print,("8g")' %str(e)

38n.quit ()

39return

40print*** Found newsgroup "&s"' %GRNM ;

41

42rng = '85-8s' 目(1st, 1st)

43rsp, frm=n.xhdr('from',rng)

44rsp, sub =n.xhdr ('subject', rng)

45rsp,dat =n.xhdr('date', rng)

46print !.1.** Found last article (9s) :

47


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~