当前位置: 代码迷 >> 综合 >> 自己写的python操作FTP服务器(未完,没写下载操作)
  详细解决方案

自己写的python操作FTP服务器(未完,没写下载操作)

热度:26   发布时间:2024-01-19 08:10:37.0
# -*- 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_pathexcept:print "文件%s上传失败" % local_pathelse: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 = fileelse:upload_dir = local_dirtry: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')
  相关解决方案