Python 连接FTP
来源:互联网 发布:淘宝客推广爆款的技巧 编辑:程序博客网 时间:2024/05/16 06:10
# -*- encoding: utf8 -*-import osimport sysimport ftplib sys.setdefaultencoding('gbk')XFER_FILE = 'FILE' _XFER_DIR = 'DIR' class FTPSync(object): def __init__(self): self.conn = ftplib.FTP('192.168.8.5', 'tools', 'tools') self.conn.cwd('/meteor') # 远端FTP目录 os.chdir('./aa') # 本地下载目录 def get_dirs_files(self): u''' 得到当前目录和文件, 放入dir_res列表 ''' dir_res = [] self.conn.dir('.', dir_res.append) files = [f.split(None, 8)[-1] for f in dir_res if f.startswith('-')] dirs = [f.split(None, 8)[-1] for f in dir_res if f.startswith('d')] return (files, dirs) def walk(self, next_dir): print 'Walking to', next_dir self.conn.cwd(next_dir) try: os.mkdir(next_dir) except OSError: pass os.chdir(next_dir) ftp_curr_dir = self.conn.pwd() local_curr_dir = os.getcwd() files, dirs = self.get_dirs_files() print "FILES: ", files print "DIRS: ", dirs for f in files: print next_dir, ':', f outf = open(f, 'wb') try: self.conn.retrbinary('RETR %s' % f, outf.write) finally: outf.close() for d in dirs: os.chdir(local_curr_dir) self.conn.cwd(ftp_curr_dir) self.walk(d) def run(self): self.walk('.')def main(): f = FTPSync() # f.run()if __name__ == '__main__': main()class Xfer(object): ''''' @note: upload local file or dirs recursively to ftp server ''' def __init__(self): self.ftp = None def __del__(self): pass def setFtpParams(self, ip, uname, pwd, port = 21, timeout = 60): self.ip = ip self.uname = uname self.pwd = pwd self.port = port self.timeout = timeout def initEnv(self): if self.ftp is None: self.ftp = ftplib.FTP() print '### connect ftp server: %s ...'%self.ip self.ftp.connect(self.ip, self.port, self.timeout) self.ftp.login(self.uname, self.pwd) print self.ftp.getwelcome() def clearEnv(self): if self.ftp: self.ftp.close() print '### disconnect ftp server: %s!'%self.ip self.ftp = None def uploadDir(self, localdir='./', remotedir='./'): if not os.path.isdir(localdir): return self.ftp.cwd(remotedir) for file in os.listdir(localdir): src = os.path.join(localdir, file) if os.path.isfile(src): self.uploadFile(src, file) elif os.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('..') def uploadFile(self, localpath, remotepath='~/test'): if not os.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): if os.path.isfile(src): index = src.rfind('\\') if index == -1: index = src.rfind('/') return _XFER_FILE, src[index+1:] elif os.path.isdir(src): return _XFER_DIR, '' def upload(self, src): filetype, filename = self.__filetype(src) self.initEnv() if filetype == _XFER_DIR: self.srcDir = src self.uploadDir(self.srcDir) elif filetype == _XFER_FILE: self.uploadFile(src, filename) self.clearEnv() if __name__ == '__main__': srcDir = r"/Users/meteor/Desktop/gitlab/aa" # srcFile = r'C:\sytst\sar.c' xfer = Xfer() xfer.setFtpParams('192.168.8.5', 'tools', 'tools') xfer.upload(srcDir) xfer.upload(srcFile)
0 0
- python连接ftp上传下载
- Python 连接FTP
- python连接FTP服务器
- Python连接ftp,并对FTP进行操作
- FTP连接
- ftp连接
- FTP连接
- Python学习 网络编程(五) FTP连接
- python---项目1-ftp扫描与连接socket
- python ftp
- Python FTP
- 【python FTP】python操作FTP
- ftp连接过程
- FTP连接穿过防火墙
- 使用VC连接ftp
- 使用VC连接ftp
- 自动连接ftp脚本
- ABAP连接FTP服务器
- perl分析ORACLE监听日志(登录情况)
- canvas 笛卡尔心
- jquery ui dialog
- WeakReference 在android中的应用
- 【功能发布】Crash不好找?Bugly来支招!
- Python 连接FTP
- Android之自定义View实现随手势滑动的控件
- linux常用命令
- Oracle 的函数
- android服务_通过bindService调用服务里的方法
- GOPS2017全球运维大会 • 深圳站嘉宾阵容提前揭晓!!!
- .net平台下C#socket通信
- 色彩空间:RGB、YUV与YCbCr
- 安卓Studio更新版本后无法导入以前的项目