python实现ftp客户端示例分享
发布时间:2021-07-06 08:41:18
#!/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


猜你喜欢
- 你还没用 jQuery 写过导航菜单? 相信看到这些出色的jQuery导航菜单后,一定会为此而后悔没早点把 jQuery 应用到自己的Web
- 不同的是setInterval会每隔指定的时间段就执行一次代码,具有重复性。而setTimeout只会调用后执行一次。 下面通过函数的建立和
- 环境使用Python 3.8–> 解释器 <执行python代码>Pycharm–
- 对json数据进行查询及修改使用 字段->'$.json属性' 进行查询条件使用 json_extract 函数查询,
- 在SQL查询分析器执行以下代码就可以了。declare @t varchar(255),@c varchar(255)declare tab
- 本文实例讲述了Python实现基于PIL和tesseract的验证码识别功能。分享给大家供大家参考,具体如下:之前搞这个搞了一段时间,后面遇
- 腐蚀在一些图像中,会有一些异常的部分,比如这样的毛刺:对于这样的情况,我们就可以应用复式操作了。需要注意的是,腐蚀操作只能处理二值图像,即像
- 前言GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护
- 背景:python函数库scipy的quad、dblquad实现一维二维积分的范例。需要注意dblquad的积分顺序问题。代码:import
- 转自微信公众号: Python之禅1.日志简介说到日志,无论是写框架代码还是业务代码,都离不开日志的记录,他能给我们定位问题带来极
- SELECT sch.name + '.' + t.name AS [Table Name],
- 首先要有一个概念:并不是一个语言支持函数,这个语言就可以叫做“函数式语言”。函数式语言中的函数(function),除了能被调用之外,还具有
- 在数据科学和机器学习中,我们通常会处理大量的数据,这些数据可能会超过计算机的内存限制,因此我们需要一种方法来读取大型数据文件。在 Pytho
- 问题描述先说明一下问题的由来:Django的模型中经常会用ForeignKey来关联其他表格数据class MeasureTask(mode
- 引言一波未平,一波又起。金融公司的业务实在是太引人耳目,何况我们公司的业处正处于风口之上(区块链金融),并且每天有大量现金交易,所以不知道有
- 实例如下: $(document).on("click",".admin-side-friend",
- 什么是goroutine?Goroutine是建立在线程之上的轻量级的抽象。它允许我们以非常低的代价在同一个地址空间中并行地执行多个函数或者
- 网页设计中,内容组织恐怕是最至关重要、最影响设计品质的方面了。如何将信息组织到好的布局中,是一个网站的基础,并且应该在考虑外观之前就决定好。
- print函数:Python中可以直接使用的函数,可以将信息展示在控制台print()函数可以输出哪些内容?print()函数输出的内容可以
- 进程什么是进程进程指的是一个程序的运行过程,或者说一个正在执行的程序所以说进程一种虚拟的概念,该虚拟概念起源操作系统一个CPU 同一时刻只能