Python 操作FTP文件,上传下载文件

来源:小琰子 发布时间:2018-11-03 16:03:19 阅读量:1053


#!C:/Python27

#coding=utf-8

 

from ctypes import *

import os

import sys

import ftplib

 

 

class myFtp:

    ftp = ftplib.FTP()

    bIsDir = False

    path = ""

 

    def __init__(self, host, port='21'):

        # self.ftp.set_debuglevel(2) #打开调试级别2,显示详细信息

        # self.ftp.set_pasv(0)      #0主动模式 1 #被动模式

        self.ftp.connect(host, port)

 

    def Login(self, user, passwd):

        self.ftp.login(user, passwd)

        print self.ftp.welcome

 

    def DownLoadFile(self, LocalFile, RemoteFile):#下载当个文件

        file_handler = open(LocalFile, 'wb')

        print  file_handler

        self.ftp.retrbinary("RETR %s" % (RemoteFile), file_handler.write)#接收服务器上文件并写入本地文件

        file_handler.close()

        return True

 

    def UpLoadFile(self, LocalFile, RemoteFile):

        if os.path.isfile(LocalFile) == False:

            return False

        file_handler = open(LocalFile, "rb")

        self.ftp.storbinary('STOR %s' % RemoteFile, file_handler, 4096)#上传文件

        file_handler.close()

        return True

 

    def UpLoadFileTree(self, LocalDir, RemoteDir):

        if os.path.isdir(LocalDir) == False:

            return False

        print "LocalDir:", LocalDir

        LocalNames = os.listdir(LocalDir)

        print "list:", LocalNames

        print RemoteDir

        self.ftp.cwd(RemoteDir)

        for Local in LocalNames:

            src = os.path.join(LocalDir, Local)

            if os.path.isdir(src):

                self.UpLoadFileTree(src, Local)

            else:

                self.UpLoadFile(src, Local)

 

        self.ftp.cwd("..")

        return

 

    def DownLoadFileTree(self, LocalDir, RemoteDir):#下载整个目录下的文件

        print "remoteDir:", RemoteDir

        if os.path.isdir(LocalDir) == False:

            os.makedirs(LocalDir)

        self.ftp.cwd(RemoteDir)

        RemoteNames = self.ftp.nlst()

        print "RemoteNames", RemoteNames

        print self.ftp.nlst("/del1")

        for file in RemoteNames:

            Local = os.path.join(LocalDir, file)

            if self.isDir(file):

                self.DownLoadFileTree(Local, file)

            else:

                self.DownLoadFile(Local, file)

        self.ftp.cwd("..")

        return

 

    def show(self, list):

        result = list.lower().split(" ")

        if self.path in result and "<dir>" in result:

            self.bIsDir = True

 

    def isDir(self, path):

        self.bIsDir = False

        self.path = path

        # this ues callback function ,that will change bIsDir value

        self.ftp.retrlines('LIST', self.show)

        return self.bIsDir

 

    def close(self):

        self.ftp.quit()

 

 

if __name__ == "__main__":

    ftp = myFtp('10.116.118.80')

    ftp.Login('778735', '123456')#登录,如果匿名登录则用空串代替即可

    ftp.DownLoadFileTree('E:/study', '/owt/20170504')  # 从目标目录下载到本地目录E盘

    #ftp.UpLoadFileTree('E:/study', '/owt/20170504')

    #ftp.DownLoadFile('E:/study/r2101-ROOT-20170428.zip','/owt/20170504/r2101-ROOT-20170428.zip')

    #ftp.UpLoadFile('E:/study/bak.txt','/owt/20170504/bak.txt')

    ftp.close()

    print "ok!"


--------------------- 

作者:小琰子 

来源:CSDN 

原文:https://blog.csdn.net/qq_18808965/article/details/78031870 

版权声明:本文为博主原创文章,转载请附上博文链接!


标签: 服务器搭建
分享:
评论:
你还没有登录,请先