设为首页 收藏本站
查看: 1341|回复: 0

[经验分享] python简介FTP模块

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-11-6 09:59:13 | 显示全部楼层 |阅读模式
  

Python中的ftplib模块



Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件



FTP的工作流程及基本操作可参考协议RFC959



ftp登陆连接



from ftplib import FTP #加载ftp模块


ftp=FTP() #设置变量

ftp.set_debuglevel(2) #打开调试级别2,显示详细信息

ftp.connect("IP","port") #连接的ftp sever和端口

ftp.login("user","password")#连接的用户名,密码

print ftp.getwelcome() #打印出欢迎信息

ftp.cmd("xxx/xxx") #更改远程目录

bufsize=1024 #设置的缓冲区大小

filename="filename.txt" #需要下载的文件

file_handle=open(filename,"wb").write #以写模式在本地打开文件

ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件

ftp.set_debuglevel(0) #关闭调试模式

ftp.quit #退出ftp


ftp相关命令操作


ftp.cwd(pathname) #设置FTP当前操作的路径

ftp.dir() #显示目录下文件信息

ftp.nlst() #获取目录下的文件

ftp.mkd(pathname) #新建远程目录

ftp.pwd() #返回当前所在位置

ftp.rmd(dirname) #删除远程目录

ftp.delete(filename) #删除远程文件

ftp.rename(fromname, toname)#将fromname修改名称为toname。

ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件
  ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下载FTP文件
  from ctypes import *
import os
import sys
import ftplib
class KANFtp:
ftp = ftplib.FTP()
bIsDir = False
path = ""
def __init__(self, host):
self.ftp.connect( host )
def Login(self, user, passwd ):
self.ftp.login( user, passwd )
print self.ftp.welcome
def DownLoadFile( self, LocalFile, RemoteFile ):
file_handler = open( LocalFile, 'wb' )
self.ftp.retrbinary( "RETR %s" %( RemoteFile ), file_handler.write )
file_handler.close()
return True
def UpLoadFile( self, LocalFile, RemoteFile ):
if os.path.isfile( LocalFile ) == False:
return False
print os.path
file_handler = open( LocalFile, "rb" )
self.ftp.storbinary( 'STOR %s'%RemoteFile, file_handler, 4096 )
file_handler.close()
return True
def UpLoadFileTree( self, LocalDir, RemoteDir ):
if os.path.isdir( LocalDir ) == False:
return False
LocalNames = os.listdir( LocalDir )
if self.ftp.dir(RemoteDir) == None:
self.ftp.mkd( RemoteDir )
self.ftp.cwd( RemoteDir )
for Local in LocalNames:
src = os.path.join( LocalDir, Local)
if os.path.isdir( src ):
self.UpLoadFileTree( src, Local )
else:
self.UpLoadFile( src, Local )
self.ftp.cwd( ".." )
return
def DownLoadFileTree( self, LocalDir, RemoteDir ):
if os.path.isdir( LocalDir ) == False:
os.makedirs( LocalDir )
self.ftp.cwd( RemoteDir )
RemoteNames = self.ftp.nlst()
for file in RemoteNames:
Local = os.path.join( LocalDir, file )
if self.isDir( file ):
self.DownLoadFileTree( Local, file )               
else:
#print Local, file
self.DownLoadFile( Local, file )
self.ftp.cwd( ".." )
return
def show( self, list  ):
result = list.lower().split( " " )
if self.path in result and "1" not in result:
self.bIsDir = True
return
def isDir( self, path ):
self.bIsDir = False
self.path = path
#this ues callback function ,that will change bIsDir value
self.ftp.retrlines( 'LIST', self.show )
return self.bIsDir
def dirSize(self, RemoteDir):
self.size = 0
self.ftp.cwd( RemoteDir )
RemoteNames = self.ftp.nlst()
for file in RemoteNames:
if self.isDir( file ):
continue              
else:
#print Local, file
self.size += self.ftp.size( file )
self.ftp.cwd( ".." )
return self.size
ftp = KANFtp('192.168.10.21')
ftp.Login('00000b0002','123456')
#ftp.DownLoadFile('SQLyog.dll', '/00000b0002/repos/SQLyog.dll')#ok
#ftp.UpLoadFile('SQLyog.dll', '/00000b0002/repos/SQLyog.dll')#ok
#ftp.DownLoadFileTree('python', '/00000b0002/repos/python')#ok
#ftp.UpLoadFileTree('sss',"/00000b0002/repos/sss" )
print ftp.dirSize('/00000b0002/repos/index.php')
print "ok!"




  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135774-1-1.html 上篇帖子: Linux下FTP操作命令详解 下篇帖子: RedHat配置FTP服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表