python在ftp里新建文件夹_Python实现FTP上传文件或文件夹实例(递归)

importsys

importos

importjson

fromftplibimportFTP

_XFER_FILE='FILE'

_XFER_DIR='DIR'

classXfer(object):

'''''

@note: upload local file or dirs recursively to ftp server

'''

def__init__(self):

self.ftp=None

def__del__(self):

pass

defsetFtpParams(self, ip, uname, pwd, port=21, timeout=60):

self.ip=ip

self.uname=uname

self.pwd=pwd

self.port=port

self.timeout=timeout

definitEnv(self):

ifself.ftpisNone:

self.ftp=FTP()

print'### connect ftp server: %s ...'%self.ip

self.ftp.connect(self.ip,self.port,self.timeout)

self.ftp.login(self.uname,self.pwd)

printself.ftp.getwelcome()

defclearEnv(self):

ifself.ftp:

self.ftp.close()

print'### disconnect ftp server: %s!'%self.ip

self.ftp=None

defuploadDir(self, localdir='./', remotedir='./'):

ifnotos.path.isdir(localdir):

return

self.ftp.cwd(remotedir)

forfileinos.listdir(localdir):

src=os.path.join(localdir,file)

ifos.path.isfile(src):

self.uploadFile(src,file)

elifos.path.isdir(src):

try:

self.ftp.mkd(file)

except:

sys.stderr.write('the dir is exists %s'%file)

self.uploadDir(src,file)

self.ftp.cwd('..')

defuploadFile(self, localpath, remotepath='./'):

ifnotos.path.isfile(localpath):

return

print'+++ upload %s to %s:%s'%(localpath,self.ip, remotepath)

self.ftp.storbinary('STOR '+remotepath,open(localpath,'rb'))

def__filetype(self, src):

ifos.path.isfile(src):

index=src.rfind('\\')

ifindex==-1:

index=src.rfind('/')

return_XFER_FILE, src[index+1:]

elifos.path.isdir(src):

return_XFER_DIR, ''

defupload(self, src):

filetype, filename=self.__filetype(src)

self.initEnv()

iffiletype==_XFER_DIR:

self.srcDir=src

self.uploadDir(self.srcDir)

eliffiletype==_XFER_FILE:

self.uploadFile(src, filename)

self.clearEnv()

if__name__=='__main__':

srcDir=r"C:\sytst"

srcFile=r'C:\sytst\sar.c'

xfer=Xfer()

xfer.setFtpParams('192.x.x.x','jenkins','pass')

xfer.upload(srcDir)

xfer.upload(srcFile)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值