设为首页 收藏本站
查看: 887|回复: 0

[经验分享] [PYTHON] 核心编程笔记(17.Python网络客户端编程)

[复制链接]

尚未签到

发表于 2018-8-11 06:00:05 | 显示全部楼层 |阅读模式
  17.1 什么是因特网客户端?
  17.2 文件传输
  17.2.1 文件传输因特网协议
  流行的有文件传输协议(FTP),Unix-to-Unix复制协议(UUCP),以及网页的超文本传
  输协议(HTTP),另外,还有(Unix下的)远程文件复制指令scp(以及更安装,更灵活的
  scp和rsync)
  17.2.2 文件传输协议(FTP)
  展示这个协议工作流程如下:
  1.客户端连接远程FTP服务器
  2.客户端输入用户名和密码(或"anonymous"和e-mail地址)
  3.客户端做各种文件传输和信息查询操作
  4.客户端登出远程FTP服务器,结束通讯
  17.2.3 Python和FTP
  流程:
  1.连接到服务器
  2.登陆
  3.发出服务请求(有可能返回信息)
  4.退出
  from ftplib import FTP
  f = FTP('ftp.python.org')
  f.login('anonymous','guess@who.org')
  .
  .
  f.quit()
  17.2.4 ftplib.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)下载的数据
  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()关闭连接并退出
  17.2.5 交互式FTP示例
  注:保证本机开启ftp服务
  >>> from ftplib import FTP
  >>> f = FTP('localhost')
  >>> f.login('test1','12344321')
  '230 Login successful.'
  >>> f.dir()
  -rw-r--r--    1 0        0               0 Dec 20 14:34 1
  -rw-r--r--    1 0        0               0 Dec 20 14:34 2
  -rw-r--r--    1 0        0               0 Dec 20 14:34 3
  -rw-r--r--    1 0        0               0 Dec 20 14:34 4
  -rw-r--r--    1 0        0               0 Dec 20 14:34 5
  >>> f.quit()
  '221 Goodbye.'
  17.2.6 客户端FTP程序举例
  例,下载网站中最新版本的文件
  # vi getLateestFTP.py
  ---------------------------------------
  #!/usr/bin/env python
  import ftplib
  import os
  import socket
  HOST = 'ftp.mozilla.org'
  DIRN = 'pub/mozilla.org/webtools'
  FILE = 'bugzilla-LATEST.tar.gz'
  def main():
  try:
  f = ftplib.FTP(HOST)
  except (socket.error, socket.gaierror), e:
  print 'ERROR: cannot reach "%s"' % HOST
  return
  print '*** Connected to host "%s"' % HOST
  try:
  f.login()
  except ftplib.error_perm:
  print 'ERROR: cannot login anonymously'
  f.quit()
  return
  print '*** Logged in as "anonymous"'
  try:
  f.cwd(DIRN)
  except ftplib.error_perm:
  print 'ERROR: connot CD to "%s"' % DIRN
  f.quit()
  return
  print '*** Changed to "%s" folder' % DIRN
  try:
  f.retrbinary('RETR %s' % FILE,open(FILE, 'wb').write)
  except ftplib.error_perm:
  print 'ERROR: connot read file "%s"' % FILE
  os.unlink(FILE)
  else:
  print '*** Downloaded "%s" to CWD' % FILE
  f.quit()
  return
  if __name__ == '__main__':
  main()
  ---------------------------------------
  # python getLatestFTP.py
  *** Connected to host "ftp.mozilla.org"
  *** Logged in as "anonymous"
  *** Changed to "pub/mozilla.org/webtools" folder
  *** Downloaded "bugzilla-LATEST.tar.gz" to CWD
  17.2.7 FTP的其他方面
  Python同时支持主动和被动模式
  以下是一些典型的FTP客户端类型:
  命令行客户端程序
  GUI客户端程序
  网页浏览器
  定制程序
  17.3 网络新闻
  17.3.1 Usenet 与新闻组
  13.3.2 网络新闻传输协议(NNTP)
  17.3.3 Python和NNTP
  17.3.4 nntplib.NNTP类方法
  17.3.5 交互式NNTP举例
  17.3.6 客户端程序NNTP举例
  17.3.7 NNTP的其他方面
  17.4 电子邮件
  17.4.1 E-mail系统组件和协议
  17.4.2 发送E-mail
  要发送e-mail,你的邮件客户端一定要连接到一个MTA(消息传输代理),通过某种协
  议通讯,MTA之间通讯所使用的协议叫消息传输系统(MTS),只有两个MTA都使用这个
  协议时,才能进行通讯.
  SMTP
  一些实现了SMTP的著名MTA包括:
  开源MTA:
  Sendmail
  Postfix
  Exim
  qmail
  商业MTA
  Microsoft Exchange
  Lotus Notes Domaino Mail Server
  SMTP是在因特网上MTA之间用于消息交换的最常用的MTS,它被MTA用来把e-mail从
  一台主机传送到另一台主机,在你发e-mail的时候,你必须连接到一个外部的SMTP
  服务器,这是,你的邮件程序是SMTP客户端,你的SMTP服务器为你的消息的第一跳板
  17.4.3 Python和SMTP
  1.连接到服务器
  2.登陆(如果需要的话)
  3.发出服务请求
  4.退出
  下面是一些Python的伪代码:
  from smtplib import SMTP
  n = SMTP('smtp.yourdomain.com')
  ...
  n.quit()
  17.4.4 smtplib.SMTP方法
  SMTP对象的方法
  方法描述
  Sendmail
  (from,to,msg[,
  mopts,ropts])把msg从from发送给to(列表或元祖).ESMTP设置(mopts)和收件人设置( ropts)为可选
  quit()关闭连接,然后退出
  login(user, passwd)使用user用户和passwd密码登陆到SMTP服务器
  17.4.5 交互式SMTP示例:
  17.4.6 SMTP的其他方面
  17.4.7 接收E-mail
  17.4.8 POP和IMAP
  17.4.9 Python和POP3
  17.4.10 交互式POP3举例
  17.4.10 poplib.POP3类方法
  17.4.12 客户端程序SMTP和POP3举例
  17.5 相关模块
  17.5.2 其他网络协议
  模块描述
  ftplibFTP协议客户端
  gopherlibGopher协议客户端
  httplibHTTP和HTTPS协议客户端
  imaplibIMAP4协议客户端
  nntplibNNTP protocol client
  poplibPOP3协议客户端
  smtplibSMTP协议客户端
  telnetlibTelnet协议客户端类

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549779-1-1.html 上篇帖子: python 第一天 下篇帖子: 【Python2】03、Python对象类型及其运算
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表