# -*- coding: utf-8 -*- import ftplib import os class XMyFtp: time_out = 30 ftp_user = "yxjk" ftp_pwd = "yxjk" ftp_host = "192.168.10.95" ftp_port = 21 ftp = None #FTP初始化 def __init__(self): self.ftp = ftplib.FTP() try: self.ftp.connect(self.ftp_host,self.ftp_port) except: print "无法连接远程服务器" exit(-1) try: self.ftp.login(self.ftp_user,self.ftp_pwd) except: print "用户名、密码不正确" exit(-1) self.ftp.set_pasv(False) print self.ftp.getwelcome() #获取FTP服务器默认路径下的目录列表 def GetRemoteRootDir(self): pwdPath = self.ftp.pwd() #获取FTP当前路径 if pwdPath == '/' or pwdPath == './': return self.ftp.nlst() else: self.ftp.cwd('./') return self.ftp.nlst() #上传文件到FTP服务器 #注意:file_path不可为目录,必须为带有文件名的路径 def UploadFile(self,local_path,ftp_path): if(os.path.exists(local_path)): try: self.ftp.storbinary('STOR %s'%ftp_path, open(local_path,'rb')) print "文件%s上传成功" % local_path except: print "文件%s上传失败" % local_path else: print "目标文件不存在" #上传目录到FTP服务器 def UploadDir(self,local_dir,ftp_dir): upload_dir = None self.ftp.cwd('/') if(os.path.isabs(local_dir)): dir,file = os.path.split(local_dir) upload_dir = file else: upload_dir = local_dir try: self.ftp.cwd(ftp_dir) except: try: self.ftp.mkd(ftp_dir) #首次创建目录会有异常,但目录却会创建成功,在捕获异常之后尝试切换目录 except: self.ftp.cwd(ftp_dir) remote_dir = ftp_dir.lstrip('/'); if(self.ftp.pwd().lstrip('/') == remote_dir): remote_dir = remote_dir.split('/') remote_dir = remote_dir[len(remote_dir)-1] self.ftp.cwd('/') if(remote_dir == upload_dir): for file in os.listdir(local_dir): if os.path.isdir(file): self.UploadDir(local_dir+'/'+file,ftp_dir) else: self.UploadFile(local_dir+'/'+file,ftp_dir+'/'+file) else: self.UploadDir(local_dir,ftp_dir+'/'+remote_dir) else: print "远程目录非法" #print self.ftp.pwd() self.ftp.close() #myftp = XMyFtp() #myftp.GetRemoteDir() #myftp.UploadFile('e:/pydev/Eobject/upload/d.txt','inc/upload/d.txt') #myftp.UploadDir("e:/pydev/Eobject/upload",'inc/upload')
自己写的python操作FTP服务器(未完,没写下载操作)
最新推荐文章于 2023-05-11 10:22:30 发布