python和ftp

1 ftp(文件传输协议)工作流程

1 客户端连接远程主机上的FTP服务器

2 客户端输入用户名和密码(或‘anomymous’ 和电子邮件地址)

3 客户端进行各种文件传输和信息查询操作

4 客户端从远程FTP服务器直接退出,结束传输

ftp两种模式:主动和被动,只有主动模式下服务器才使用数据端口,20号。被动模式下,服务器只是高数客户端随机的端口号,客户端必须主动建立连接,21号。

2 python和FTP

导入ftplib模块,实例化一个ftplib.FTP类对象,所有的FTP操作(如登录、传输文件和注销的)都要这个对象完成

ftplib.FTP类的方法,只介绍常用的几个

login(user='anonymous',passwd=",act=“)  #登录服务器 ,所有的参数都可选

pwd #获取当前目录

cwd(path) #把当前工作目录设置path所示的路径(如path=/ftp/byq/example)

dir([path[,…[,cb]])# 显示path目录中的内容,可选的参数cb是一个回调函数,传递给retrlines()方法

retrbinary(cmd,cb[,8kb])

# 下载文件,只是处理二进制文件,回调函数cb用于处理每一块(默认大小8kb)的下载的数据

storbinary(cmd,f[,8kb])#处理二进制文件,要给定一个对象f,上传块bs大小默认8kb

3 客户端FTP实例

 1 import ftplib
 2 import socket
 3 import os
 4 
 5 
 6 host = 'ftp,website'
 7 dirn = 'filedir'
 8 files = 'filename'
 9 
10 
11 def main():
12     try:
13         f = ftplib.FTP(host)
14     except(socket.error, socket.gaierror) as e:
15         print('error:cannot reach "%S"' % host)
16         return
17     print('***Connected to hos "%s"' % host)
18     
19     try:
20         f.login()
21     except ftplib.error_perm:
22         print('error:cannot login anonymously')
23         f.quit()
24         return 
25     print('***logged in as "anonymous"')
26     
27     try:
28         f.cwd(dirn)
29     except ftplib.error_perm:
30         print('error:cannot cd to "%s"' % dirn)
31         f.quit()
32         return 
33     print('***changed to "%s" folder' % dirn)
34     
35     try:
36         f.retrbinary('retr %s' % files, open(files, 'wb').write)
37     except ftplib.error_perm:
38         print('error:cannot read files "%s"' % files)
39         os.unlink(files)
40     else:
41         print('***downloaded "%s" to cmd' % files)
42         f.quit()
43     
44     if __name__ == '__main__':  # 运行独立脚本的惯用方法
45         main()     

 

 

 

 

 

 

posted @ 2018-08-25 01:07  !一路向前  阅读(647)  评论(0)    收藏  举报