欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于ftplib实现py控制ftp服务器(含效果源码)

程序员文章站 2022-07-14 12:50:02
...

本博文源于python基础,为了便于友好,我们还是需要下载一个30天免费玩的服务器。博主特意准备好这个博文供大家玩耍
wingftpserver完整配置免费ftp站点(指南)
如果大家本身对python控制ftp不熟,可以查看这篇博文的具体的函数指南,本篇博文仅放实验
python控制ftp理论篇

实验效果

python控制ftp实验效果
基于ftplib实现py控制ftp服务器(含效果源码)

实验原理

利用ftp协议的函数方法制作而成,大多数都是理论篇的方法

实验代码

from ftplib import FTP
bufsize = 1024
def Get(filename):
    command = 'RETR ' + filename
    ftp.retrbinary(command, open(filename,'wb').write, bufsize)
    print('下载成功')
def Put(filename):
    command = 'STOR' + filename
    filehandler = open(filename,'rb')
    ftp.storbinary(command,filehandler,bufsize)
    filehandler.close()
    print('上传成功')

def PWD():
    print(ftp.pwd())

def Size(filename):
    print(ftp.size(filename))

def 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)
print(ftp.getwelcome())
action = {'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.delete}

while True:
    print('pyftp>',)
    cmds = input()
    cmd = str.split(cmds)
    try:
        if len(cmd) == 1:
            if str.lower(cmd[0]) == 'quit':
                break
            else:
                action[str.lower(cmd[0])]()
        elif len(cmd) == 2:
            action[str.lower(cmd[0])](cmd[1])
        elif len(cmd) == 3:
            action[str.lower(cmd[0])](cmd[1],cmd[2])
        else:
            print('输入错误')

    except:
        print('命令出错')

ftp.quit()