自学Python 65 开发FTP文件传输程序

Python 开发FTP文件传输程序



  在计算机网络领域中,远程文件传输又是一个重要的分之。在计算机七层协议当中,TCP、FTP、Telnet、UDP可以实现远程文件处理。Python作为一门功能强大的开发语言,可以实现对远程文件的处理。


一、Python 和 FTP

  当使用Python语言编写FTP客户端程序时,需要将相应的厍 ftplib 导入到项目程序中,然后实例化一个ftplib.FTP类对象,所有的FTP操作(如登录、传输文件和注销等)都要使用这个对象完成。使用类FTP可以创建一个FTP连接对象,具体语法格式如下所示。

FTP (host, user, passwd, acct)

 ● host: 要连接的FTP服务器,可选参数;
 ● user: 登录FTP服务器所使用的用户名,可选参数;
 ● passwd: 登录FTP服务器所使用的密码,可选参;
 ● acct: 可选参数,默认为空。
  在内置模块 ftplib 的FTP类中,主要包含如下所示常用的方法。
  (1)方法set_debuglevel()。
  当创建一个FTP连接对象以后,可以使用方法set_debuglevel(设置调试级别。其原型如下:

set_debuglevel (level)

  参数level是指调试级别,默认的调试级别为0。
  (2)方法connect()。
  如果在创建FTP连接对象时没有使用参数 host,则可以使用FTP对象中的方法 connect(),其原型如下:

connect (host,port,timeout,source-adolross)

 ● host: 要连接的FTP服务器;
 ● port: FTP服务器的端口,可选参数。
  (3)方法login()。
  如果在创建FTP对象时没有使用户名和密码,则可以通过FTP对象中的方法login()使用用户名和密码登录到FTP服务器。其原型如下:

login (user, passwd, acct)

 ● user: 登录FTP服务器所使用的用户名:
 ● passwd: 登录FTP服务器所使用的密码:
 ● acct: 可选参数,默认为空。

二、创建一个FTP文件传输客户端

  在下面的实例中,演示了使用库ftplib创建一个简单的FTP文件传输客户端的过程。实例代码具体实现代码如下所示:

from ftplib import FTP      #导入FTP
bufsize = 1024      #设置缓冲区的大小
def Get(filename):      #定义函数Get()下载文件
    command = 'RETR' + filename     #变量command初始化
    #下载FTP文件
    ftp.retrbinary(command,open(filename,'wb').write,bufsize)
    print('下载成功')       #下载成功提示
def Put (filename):     #定义函数Put()上传文件
    command = 'STOR ' + filename        #变量command初始化
    filehandler = open(filename,'rb')       #打开指定文件
    ftp.storbinary (command, filehandler,bufsize)   #实现文件上传操作
    filehandler.close()     #关闭连接
    print('上传成功')   #打印显示提示
def PWD():      #定义获取当前目录函数PWD()
    print(ftp.pwd())        #返回当前所在位置
def Size(filename): #定义获取文件大小函数Size()
    print(ftp.size(filename)) #显示文件大小
def Help():     #定义系统帮助函数Help()
    print('''       #开始打印显示帮助提示
    =============================================
                simple Python FTP
    =============================================
        cd                  进入文件夹
        delete              删除文件
        dir                 获取当前文件列表
        get                 下载文件
        help                帮助
        mkdir               创建文件夹
        put                 上传文件
        pwd                 获取当前目录
        rename              重命名文件
        rmdir               删除文件夹
        size                获取文件大小
    ''')
server = input('请输入FTP服务器地址:')  #信息输入
ftp = FTP (server)      #获取服务器地址
username = input('请输入用户名:') #输入用户名
password = input('请输入密码:')   #输入密码
ftp.login(username,password)    #使用用户名和密码登录ETP服务器
print(ftp.getwelcome())     #打印显示欢迎信息
#定义一个字典actions,在里面保存操作命令
actions = {'dir':ftp.dir,'pwd': PWD,'cd':ftp.cwd,'get':Get,
        'put':Put,'help':Help,'rmdir':ftp.rmd,
        'mkdir':ftp.mkd,'delete':ftp.delete,
        'size':Size,'rename':ftp. rename}
while True:     #执行循环操作
    print('pyftp>')     #打印显示提示符
    cmds = input()      #获取用户的输入
    cmd = str.split (cmds)  #使用空格分割用户输入的内容
    try:        #异常处理
        if len(cmd) == 1:       #验证输入命令中是否有参数
            if str.lower(cmd[0]) == 'quit': #如果输入命令是quit则退出循环
                break
            else:
                actions[str.lower(cmd[0])]()    #调用与输出命令对应的操作函数
        elif len(cmd) == 2:     #处理只有一个参数的命令
            actions[str.lower(cmd[0])](cmd[1])  #调用与输入命令对应的操作函数
        elif len(cmd)== 3:      #处理有两个参数的命令
            actions[str.lower(cmd[0])](cmd[1],cmd[2]) #调用与输入命令对应的操作函数
        else:       #如果是其他情况
            print('输入错误')       #打印显示错误提示
    except:
        print('命令出错')
ftp.quit ()       #退出系统

  运行上述实例代码后,会要求输入FTP服务器的地址、用户名和密码。如果输入上述信息正确则完成FTP服务器登录,并显示一个“pyftp>”提示符,等待用户输入命令。如果输入“dir" 和“pwd”这两个命令,会调用执行对应的命令操作函数。在测试运行本实例代码时,需要有一个FTP服务器及登录该服务器的用户名和密码。如果没有互联网中的FTP服务器,可以尝试在本地计算机中通过IIS配置一个FTP服务器,然后进行测试。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值