python ftplib模块编写简单的ftp服务

 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 True
17
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 = True
35          else:
36              self.juge = False
37          return self.juge
38
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 False
58          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:continue
87        if choices   == ‘1‘:Login()
88        elif choices == ‘2‘:Update()
89        elif choices == ‘3‘:DownLoad()
90        elif choices == ‘4‘:close()
91
92 Menu()
时间: 2024-10-10 07:00:57

python ftplib模块编写简单的ftp服务的相关文章

ftplib模块编写简单的ftp服务

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.

基于server2016搭建简单的FTP服务

基于server2016搭建简单的FTP服务 > 简介:FTP 是因特网网络上历史最悠久的网络工具,从 1971 年由 A KBHUSHAN 提出第一个 FTP 的RFC(RFC114)至今近半个世纪来,FTP 凭借其独特的优势一直都是因特网中最重要.最广泛的服务之一. FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.它能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样.但是,FTP有着极高的延时,这意味着,从开始请求到

Python ftplib模块

Help on module ftplib: NAME ftplib - An FTP client class and some helper functions. 名字: ftplib 模块 - 一个FTP客户端类 和 一些辅助的方法 FILE c:\python27\lib\ftplib.py DESCRIPTION Based on RFC 959: File Transfer Protocol (FTP), by J. Postel and J. Reynolds Example: >

Python ftplib 模块关于 ftp的下载

import ftplib import os import socket import sys HOST='192.168.216.193' DIRN='c:\\ftp\FTP.123' FILE='FTP.123' USER_NAME='123' PWD='123' def Downloadfile(file_name): try: f=ftplib.FTP(HOST) except(sockt.error, socket.gaierror) as e: print ('error: can

python程序的编写简单介绍

一.语句和语法 # 注释 \  转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用 : 将两个语句连接到一行,可读性差,不建议使用 : 将代码的头和体分开 语句(代码块)用缩进方式体现不同的代码级别,建议采用4个空格(不要使用tab),因为不同编程语言环境下tab所代表的空格数不一定是4 python文件以模块的方式组织,编写一个.py结尾的文件实际上就写了一个模块 二.变量定义与赋值 a=1:1为内存变量存放于内存中,a为变量的引用,python为动

python(2)- python程序的编写简单介绍

一.语句和语法 1 2 3 4 5 6 7 8 9 10 11 # 注释 \   转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用 : 将两个语句连接到一行,可读性差,不建议使用 : 将代码的头和体分开 语句(代码块)用缩进方式体现不同的代码级别,建议采用4个空格(不要使用tab),因为不同编程语言环境下tab所代表的空格数不一定是4 python文件以模块的方式组织,编写一个.py结尾的文件实际上就写了一个模块 二.变量定义与赋值 1 2 3 4

Python random模块的简单介绍

Python中的random模块是用于生成随机数,我们也可以用他随机生成数字和字符串 random.randint(a,b)  :a到b里的一个随机整数 random.random():用于生成0到1的浮点数,如下图,0.0<x<1.0 random.uniform(a, b):用于生成指定范围的浮点数 ,不管是a大于b还是b大于a,生成的浮点数大小都在ab之间 random.randrange([start], stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,

用python socket模块实现简单的文件下载

server端: # ftp server端 import socket, os, time server = socket.socket() server.bind(("localhost", 8080)) server.listen() while True: conn, addr = server.accept() print("连接到客户端:", addr) while True: try: # windows会直接报错,需要捕获异常 data = conn

python warnings模块的简单应用

最近在学习Bottle源码时发现用到了warnings相关知识,就认真学习了下,记录下来防止忘记 # -*- coding=utf-8 -*- import warnings def fxn():     warnings.warn("deprecated", DeprecationWarning)     print 'this is fxn' fxn() 文件为 fxn.py 运行 python fxn.py 显示 this is fxn 并没有输入警告信息 添加运行参数 -W a