博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python ftplib模块编写简单的ftp服务
阅读量:5319 次
发布时间:2019-06-14

本文共 3463 字,大约阅读时间需要 11 分钟。

1 from ftplib import * 2 import os,readline 3 import sys 4 class MyFtp: 5      ftp = FTP()   #建立一个ftp对象的链接 6      def __init__(self, host, port='21'):         #构造函数初始化 7          self.ftp.connect(host=host,timeout=100)  #连接ftp服务器 8      def Login(self, user, passwd):               #登录函数 9          self.ftp.login(user=user, passwd=passwd ) 10          print (self.ftp.welcome)                  #登陆成功后ftp显示欢迎信息11          12          def DownLoadFile(self, LocalFilePath, RemoteFilePath):13          file = open(LocalFilePath, 'wb')14          self.ftp.retrbinary( "RETR %s" %( RemoteFilePath ), file.write )  #下载文件到本地15          file.close()16          return True17  18      def DownLoadFileTree(self, LocalFileDir, RemoteFileDir):19          if os.path.isdir( LocalfileDir ) == False:     #如果传入本地的不是目录20              os.makedirs(LocalFileDir)                   #就在本地新建该目录21          self.ftp.cwd(RemoteFileDir)                     #切换到远程目录22          RemoteFiles = self.ftp.nlst()                   #把远程目录里的所有文件都传给 RemoteFiles变量23          for file in RemoteFiles:24              Local = os.path.join(LocalFilesDir, file )25              chang = os.path.join(RemoteDir,file )26              if self.IsDir(chang):27                  self.DownLoadFileTree(Local, chang)28              else:29                  self.DownLoadFile( Local, chang)30          self.ftp.cwd( ".." )31  32      def IsDir(self, path):33          if os.path.isdir(path) == True:34             self.juge = True35          else:36              self.juge = False37          return self.juge38                  39      def UpLoadFileTree(self, LocalFileDir, RemoteFileDir):40          if os.path.isdir(LocalFileDir) == False:41              print( 'wrong !Please Input Dir')42          if os.path.isdir(RemoteFileDir) == False:43              os.makedirs(RemoteFileDir)44          LocalFiles = os.listdir(LocalFileDir)45          self.ftp.cwd(RemoteFileDir)46          for Local in LocalFiles:47             src = os.path.join( LocalFileDir, Local)48             chang = os.path.join(RemoteFileDir,Local)49             if os.path.isdir(src):50              self.UpLoadFileTree(src,chang)51             else:52              self.UpLoadFile(src,chang)53         self.ftp.cwd( ".." )54                 55      def UpLoadFile(self, LocalFilePath, RemoteFilePath):56          if os.path.isfile( LocalFilePath ) == False:57              return False58          file = open(LocalFile, "rb")59          self.ftp.storbinary('STOR %s'%RemoteFile, file, 4096)60          file.close()61  62  63 ftp = myFtp('192.168.19.153')   #实例化64 65 def Login():66     ftp.Login('root','root')        67 def Update():68     print('\033[34mUping.....\033[m')69     ftp.UpLoadFileTree('main', "/xxx" )70     print('Done')71 def DownLoad():72     print('\033[34mDowning.....\033[m')73     ftp.DownLoadFileTree('localDir','remoteDir')74         print ('Done')75 def Close():76      self.ftp.quit()77 78 def Menu():79     print ("""\033[;32mWelcome \033[0m\n""")80     print ("\t(1) Login")81     print ("\t(2) Update")82     print ("\t(3) DownLoad")83     print ("\t(4) close")84     while True:85        choices = raw_input('\033[32mChoice>>\033[m').strip()86        if len(choices) == 0:continue87        if choices   == '1':Login()88        elif choices == '2':Update()89        elif choices == '3':DownLoad()90        elif choices == '4':close()91        92 Menu()

转载于:https://www.cnblogs.com/zhuweiblog/p/5154752.html

你可能感兴趣的文章
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
jequery动态创建form
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
第六次java作业
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
tweenlite使用说明
查看>>
java中遍历属性字段及值(常见方法)
查看>>
在AD的环境下,更改计算机名导致TFS,无法连接解决办法
查看>>
Jenkins执行批处理文件失败
查看>>
JAVA 基础坑
查看>>
深入理解jQuery框架-框架结构
查看>>
[7.14NOIP模拟4]通讯 题解 (Tarjan缩点+贪心)
查看>>
刷水记录
查看>>