FTP编程:FTP协议需要用两个端口,一个端口是用来登录,另一个端口用来数据传输和控制。一般是20 和21端口。
Python对FTP的支持是通过ftplib模块实现的,在使用时导入ftplib模块并实例化ftplib.FTP类对象,所有的FTP操作都需要使用这个对象来完成。
例:
HOST = 'ftp.mozilla.org'
f = ftplib.FTP(HOST)
FTP 对象的方法
方法 描述
login(user='anonymous', passwd='', acct='') 登录到 FTP 服务器,所有的参数都是可选的
pwd() 得到当前工作目录
cwd(path) 把当前工作目录设置为 path
dir([path[,...[,cb]]) 显示 path 目录里的内容,可选的参数 cb 是一个回调函数,它会被传给 retrlines()方法
nlst([path[,...]) 与 dir()类似,但返回一个文件名的列表,而不是显示这些文件名
retrlines(cmd [, cb]) 给定 FTP 命令(如“RETR filename”),用于下载文本文件。可选的回调函数 cb 用于处理文件的每一行
retrbinary(cmd, cb[, bs=8192[,ra]]) 与 retrlines()类似,只是这个指令处理二进制文件。回调函数 cb用于处理每一块(块大小默认为 8K)下载的数据。
例:
f.retrbinary('RETR %s' % FILE,open(FILE, 'wb').write)
RETR <file_name> 命令是要下载该文件。
open(FILE, 'wb').write 对下载的二进制的每一块,写入到指定的文件中。
storlines(cmd, f) 给定 FTP 命令(如“STOR filename”),以上传文本文件。要给定一个文件对象 f
storbinary(cmd, f[, bs=8192]) 与 storlines()类似,只是这个指令处理二进制文件。要给定一个文件对象 f,上传块大小 bs 默认为 8Kbs=8192])
rename(old, new) 把远程文件 old 改名为 new
delete(path) 删除位于 path 的远程文件
mkd(directory) 创建远程目录
rmd(directory) 删除远程目录
quit() 关闭连接并退出
电子邮件:
e-mail 邮件由消息头和可选的消息体组成,消息头是必须的,消息体是可选的。
e-mail 是怎么工作的?有一台发送电脑(发件人的消息从这里发送出去),和一台目的电脑(收件人的信件服务器)。
发送电脑要查询到某一台中间主机,这台中间主机能到达最后的收件主机。然后这台中间主机要找一台离目的主机更近一些的主机。所以,在发送主机和目的主机之间,可能会有多台叫做“跳板”的主机。如果你仔细看看你收到的 e-mail 的邮件头,你会看到一个“passport”标记,其中记录了邮件寄给你这一路上都到过了哪些地方。
e-mail 系统的各个组件。最主要的组件是消息传输代理(MTA)。这是一个在邮件交换主机上运行的一个服务器程序,它负责邮件的路由,队列和发送工作。它们就是邮件从源主机到目的主机所要经过的跳板。所以也被称为是“信息传输”的“代理”。
SMTP 是在因特网上 MTA 之间用于消息交换的最常用的 MTS。它被 MTA 用来把 e-mail 从一台主机传送到另一台主机。在你发 e-mail 的时候,你必须要连接到一个外部的 SMTP 服务器,这时,你的邮件程序是一个 SMTP 客户端。你的 SMTP 服务器也因此成为了你的消息的第一个跳板。
Python的SMTP支持:
模块smtplib和一个smtplib.SMTP类,实例化这个类完成e-mail的相关操作。
SMTP 对象的方法
方法 描述
Sendmail
(from, to, msg[,
mopts, ropts]) 把 msg 从 from 发送给 to(列表或元组)。ESMTP 设置(mopts)和收
件人设置(ropts)为可选。
quit() 关闭连接,然后退出
login(user, passwd) 使用 user 用户和 passwd 密码登录到 SMTP 服务器
POP 和 IMAP
用于下载邮件的第一个协议叫邮局协议, 1984 年10 月公布。“邮局协议(POP)的目的是让用户的工作站可以访问邮箱服务器里的邮件。邮件要能从工作站通过简单邮件传
输协议(SMTP)发送到邮件服务器”。POP 协议的最新版本是第 3 版,也叫 POP3。
POP3 对象的常用方法
方法 描述
user(login) 发送用户名 login 到服务器,并等候服务器的正在等待用户密码的返回信息
pass_(passwd) 发送密码 passwd(在使用 user()登录之后使用)。如果登录失败,引发一
个异常
stat() 返回邮件的状态,一个长度为 2 的元组(msg_ct, mbox_siz):消息的数
量和消息的总大小也即字节数
list([msgnum]) stat()的扩展,从服务器返回长度为 3 的元组的消息列表(rsp, msg_list,
rsp_siz):服务器的返回信息,消息的列表,返回信息的大小。如果给了 msgnum 的话,只返回指定消息的数据。
retr(msgnum) 从服务器中得到消息 msgnum,并设置其“已读”标志。返回一个长度为
3 的元组(rsp, msglines, msgsiz):服务器的返回信息,消息 msgnum的所有行,消息的字节数
dele(msgnum) 把消息 msgnum 标记为删除,大多数服务器在调用 quit()后执行删除操作。
quit() 登出,保存修改(如,执行“已读”和“删除”标记等),解锁邮箱,结束连接,然后退出
另一个协议,叫交互式邮件访问协议(IMAP),现在被使用的 IMAP 版本是IMAP4rev1,它也被广泛地使用。事实上,当今世界上占有邮件服务器大多数市场的 Microsoft Exchange 就使用 IMAP 作为其下载机制。
Python支持的网络模块:
模块 描述
ftplib FTP 协议客户端
gopherlib Gopher 协议客户端
httplib HTTP 和 HTTPS 协议客户端
imaplib IMAP4 协议客户端
nntplib NNTP protocol client
nntplib NNTP 协议客户端
poplib POP3 协议客户端
smtplib SMTP 协议客户端
telnetlib Telnet 协议客户端类