python实现ftp客户端示例分享
admin
2023-07-31 02:00:48
0

复制代码 代码如下:
#!/usr/bin/python
#coding:utf-8
#write:JACK
#info:ftp example
import ftplib, socket, os
from time import sleep, ctime

def LoginFtp(self):
        ftps = ftplib.FTP()
        ftps.connect(self.host,self.port)
        ftps.login(self.name,self.passwd)

#未进行判断地址输入是否为ip或者域名;可以进行判断是否包含<或者实体符号以及\’;其他可以忽略
class LoFtp(object):
    \’this is ftp class example\’
    host = str(raw_input(\’host,127.0.0.1\\n\’))
    if host == \’\’:host = \’127.0.0.1\’

    port = raw_input(\’port,21\\n\’)
    if not(port.isdigit()):port =21

    name = str(raw_input(\’name,anonymous\\n\’))
    if name==\’\’:name=\’anonymous\’

    passwd = str(raw_input(\’password\\n\’))
    if passwd ==\’\’:passwd=\’\’

    def ZqFtp(self,host,name,passwd,port):
        self.host = host
        self.name = name
        self.passwd = passwd
        self.port = port

    def LoginFtp(self):
        self.ftps = ftplib.FTP()
        self.ftps.connect(self.host,self.port)
        self.ftps.login(self.name,self.passwd)
        self.buffer = 2048 #设置缓存大小

    def ShowFtp(self):
        self.LoginFtp()
        self.ftps.dir(\’/\’)
        dirs = str(raw_input(\’PLEASE INPUT DIR!\\n\’))
        print self.ftps.dir(dirs)

    def UpFtp(self):
        \’uploads files\’
        self.LoginFtp()
        self.ftps.set_debuglevel(2)
        filename = str(raw_input(\’PLEASE FILE NAME!\\n\’))
        file_open=open(filename,\’rb\’) #打开文件 可读即可
        self.ftps.storbinary(\’STOR %s\’% os.path.basename(filename),file_open,self.buffer)
        # 上传文件
        self.ftps.set_debuglevel(0)
        file_open.close()

    def DelFtp(self):
        \’Delete Files\’
        self.LoginFtp()
        filename=str(raw_input(\’PLEASE DELETE FILE NAME!\\n\’))
        self.ftps.delete(filename)

    def RemoveFtp(self):
        \’Remove File\’
        self.LoginFtp()
        self.ftps.set_debuglevel(2)#调试级别,0无任何信息提示
        oldfile=str(raw_input(\’PLEASE OLD FILE NAME!\\n\’))
        newfile=str(raw_input(\’PLEASE NEW FILE NAME!\\n\’))
        self.ftps.rename(oldfile,newfile)
        self.ftps.set_debuglevel(0)

    def DownFtp(self):
        \’Download File\’
        self.LoginFtp()
        self.ftps.set_debuglevel(2)
        filename=str(raw_input(\’PLEASE FILE NAME!\\n\’))
        file_down = open(filename,\’wb\’).write
        self.ftps.retrbinary(\’STOP %s\’ % os.path.basename(filename),file_down,self.buffer)
        self.ftps.set_debuglevel(0)
        file_down.close()

 

a = LoFtp()
print a.ShowFtp()

while True:
    helpn= str(raw_input(\’Whether to continue to view or exit immediately!(y/n/q)\\n\’))
    if (helpn==\’y\’)or(helpn==\’Y\’):
        dirs = str(raw_input(\’PLEASE INPUT DIR!\\n\’))
        a.ftps.dir(dirs)
    elif (helpn==\’q\’)or (helpn==\’Q\’):
        exit()
    else:
        break

 

while True:
    print \’上传请选择—-1\’
    print \’下载请选择—-2\’
    print \’修改FTP文件名称—-3\’
    num = int(raw_input(\’PLEASE INPUT NUMBER![exit:5]\\n\’))

    if num ==1:
        upf = a.UpFtp()
        print \’Upfile ok!\’
    elif num ==2:
        dof = a.DownFtp()
        print \’Download file ok!\’
    elif num ==3:
        ref = a.RemoveFtp()
        print \’Remove file ok!\’
    else:
        a.ftps.quit()
        print \’Bingo!\’
        break

#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)              创建远程目录
#每个需要输入的地方,需要进行排查检错。仅仅这个功能太小了。不过根据实际情况更改,放在bt里边当个小工具即可
#有点烂,没有做任何try

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...