前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PYTHON] 核心编程笔记(17.P

[PYTHON] 核心编程笔记(17.P

作者头像
py3study
发布2020-01-06 23:13:02
5210
发布2020-01-06 23:13:02
举报
文章被收录于专栏:python3python3

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协议客户端类

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档