广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python ftp 处理
  • 291
分享到

python ftp 处理

pythonftp 2023-01-31 01:01:57 291人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件FTP的工作流程及基本操作可参考协议RFC959ftp登陆连接from ftplib import FTP #加载ftp模

python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件

FTP的工作流程及基本操作可参考协议RFC959

ftp登陆连接

from ftplib import FTP #加载ftp模块

ftp=FTP() #设置变量
ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
ftp.connect("IP","port") #连接的ftp sever和端口
ftp.login("user","passWord")#连接的用户名,密码
print ftp.getwelcome() #打印出欢迎信息
ftp.cmd("xxx/xxx") #更改远程目录
bufsize=1024 #设置的缓冲区大小
filename="filename.txt" #需要下载的文件
file_handle=open(filename,"wb").write #以写模式在本地打开文件
ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件
ftp.set_debuglevel(0) #关闭调试模式
ftp.quit #退出ftp

ftp相关命令操作

ftp.cwd(pathname) #设置FTP当前操作的路径
ftp.dir() #显示目录下文件信息
ftp.nlst() #获取目录下的文件
ftp.mkd(pathname) #新建远程目录
ftp.pwd() #返回当前所在位置
ftp.rmd(dirname) #删除远程目录
ftp.delete(filename) #删除远程文件
ftp.rename(fromname, toname)#将fromname修改名称为toname。
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下载FTP文件


from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from CFileOperator import CFileOperator
import ftplib
import os
import thread
import time
import Socket


class CFTPServer():
    def __init__(self, name="song", passwd="song", port=21):
        self._name = name
        self._passwd = passwd
        self._port = port

    def Start(self):
        authorizer = DummyAuthorizer()
        authorizer.add_user(self._name, self._passwd, '.', perm='elradfmwM')
        authorizer.add_anonymous(os.getcwd())
        handler = FTPHandler
        handler.authorizer = authorizer
        handler.banner = "pyftpdlib based ftpd ready."
        address = ('', self._port)
        self._server = FTPServer(address, handler)
        self._server.max_cons = 256
        self._server.max_cons_per_ip = 5
        self._server.serve_forever()

    def Stop(self):
        self._server.close_all()


class CFTPCLient():
    def __init__(self, host="127.0.0.1", name="song", passwd="song", port=21,savepath='./'):
        self._host = host
        self._name = name
        self._passwd = passwd
        self._port = port
        self._ftp = None
        self._connet = False
        self._buffer = 2048
        self._FileOperator = CFileOperator()
        self._savepath=savepath
        self._srcpath=os.getcwd()

    def conneterver(self):

        try:
            self._ftp = ftplib.FTP(self._host)
        except (socket.error, socket.gaierror), e:
            print 'ERROR: cannot reach "%s"' % self._host
            self._connet = False
            return
        print '*** Connected to host "%s"' % self._host

        try:
            self._ftp.login(self._name, self._passwd)
        except ftplib.error_perm:
            print 'ERROR: login failed with "%s" and "%s"' % self._name, self._passwd
            self._ftp.quit()
            self._connet = False
            return
        self._ftp.cwd('./')
        self._ftp.nlst()
        print '*** Logged in'

        self._connet = True

    def CmdPath(self,path):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        self._ftp.cwd(path)
    def GetCur(self):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        return self._ftp.pwd()
    def List(self):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        self._ftp.dir()
    def UPLoadFile(self, filename):

        if not self._connet:
            self.conneterver()

        if not self._connet:
            return

        elem = filename

        if self._FileOperator.ISDirExit(filename):
            self._FileOperator.TarFile(filename)
            elem += ".tar"

        file_open = open(elem, 'rb')
        self._ftp.storbinary('STOR %s' % os.path.basename(elem), file_open, self._buffer)

        if not file_open.closed:
            file_open.close()

    def DeleteRomoteFile(self,filename):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        self._ftp.delete(filename)

    def DeleteRomoteDir(self,Dir):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        self._ftp.rmd(Dir)

    def RenameRomoteFile(self,oldname,newname):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        self._ftp.rename(oldname,newname)

    def get_dirs_files(self):

        dir_res = []
        self._ftp.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 DownLoadFile(self, next_dir):
        if not self._connet:
            self.conneterver()

        if not self._connet:
            return
        print 'Walking to', next_dir
        self._ftp.cwd(next_dir)
        try:
            os.mkdir(next_dir)
        except OSError:
            pass
        os.chdir(next_dir)
        ftp_curr_dir = self._ftp.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._ftp.retrbinary('RETR %s' % f, outf.write)
            finally:
                outf.close()
        for d in dirs:
            os.chdir(local_curr_dir)
            self._ftp.cwd(ftp_curr_dir)
            self.walk(d)
if __name__ == '__main__':
    c = CFTPServer()
    thread.start_new_thread(c.Start, ())
    d = CFTPCLient()
    time.sleep(2)
    d.UPLoadFile("/home/test")
    time.sleep(3000)



    #d.UPLoadFile("/home/test")
  #  d.DownLoadFile("/test.tar")
    # f =CFileOperator()
    #f.TarFile("/home/test")


--结束END--

本文标题: python ftp 处理

本文链接: https://www.lsjlt.com/news/185171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python ftp 处理
    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件FTP的工作流程及基本操作可参考协议RFC959ftp登陆连接from ftplib import FTP #加载ftp模...
    99+
    2023-01-31
    python ftp
  • python ftp
    ftp '''第一个例子''' def get_C(self,target_dir=None):         C = []         print "PWD:", self.ftp.pwd()         if target_...
    99+
    2023-01-31
    python ftp
  • VB.NET中怎么处理FTP文件
    VB.NET中怎么处理FTP文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。VB.NET处理FTP方法一:使用Ftp.exe,通过process类来调用它。Imports...
    99+
    2023-06-17
  • 如何使用Bat脚本处理ftp
    这篇文章将为大家详细讲解有关如何使用Bat脚本处理ftp,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、FTP命令说明 1、在windows系统中因为FTP是一个程序,如果在bat脚本中直接调用FTP的...
    99+
    2023-06-08
  • python ftp测试
    刚学Python,做的ftp测试 1,简单ftp vim test.py #!/usr/bin/env python import time from ftplib import FTP local_dir_u...
    99+
    2023-01-31
    测试 python ftp
  • python实现FTP
    原文地址:https://www.cnblogs.com/huangxm/p/6274645.html#undefined 在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些: 主动模式: ...
    99+
    2023-01-31
    python FTP
  • 批处理FTP上传文件脚本分享
    本篇内容主要讲解“批处理FTP上传文件脚本分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“批处理FTP上传文件脚本分享”吧!背景:本机一个文件“A.TXT"在C盘根目录下,需要上传到...
    99+
    2023-06-08
  • Python ftp上传文件
    以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下 #encoding=utf8 from ftplib import FTP #加载ftp模块 IP = '103.240...
    99+
    2022-06-04
    上传文件 Python ftp
  • python ftp常用操作
    需求快速进行ftp上传 ,下载,查询文件原来直接在shell下操作:需要【连接,输用户名,输密码,单文件操作,存在超时限制】太过于繁琐,容易操作失败改进一句命令,搞定多文件上传,下载,查询,列表等操作后期可以加入更强大的功能源代码#!/us...
    99+
    2023-01-31
    常用 操作 python
  • python ftp 上传文件
    python  ftp 上传文件 #!/usr/bin/env python #-*- coding: utf-8 -*- from ftplib import FTP       #调用 模块 i...
    99+
    2023-01-31
    上传文件 python ftp
  • python实现FTP功能
    如果只是想下载文件,那么urllib2模块就可以轻松完成这个任务,而且比FTP更简单,但是FTP一些特殊功能urllib2模块不具备。(网络编程基础P277)   #!/usr/bin/python #-*- coding:UTF-8 -*...
    99+
    2023-01-31
    功能 python FTP
  • python实现ftp上传
    #!/usr/bin/python2.7serviceip12='172.16.64.12'serviceip13='172.16.64.13'user='ebossapp'password12=',Mb(Jo0@'password13='...
    99+
    2023-01-31
    上传 python ftp
  • Python搭建FTP服务器
    Python版本 3.6.2 使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了 FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官...
    99+
    2023-01-31
    服务器 Python FTP
  • python实现FTP服务器
    在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些:主动模式:主动模式工作过程:1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接2. 客户端开始监听 N+...
    99+
    2023-01-31
    服务器 python FTP
  • python的ftp功能程序
    ftp类模块:#!/usr/bin/python# -*- coding: utf-8 -*- from ftplib import FTPimport sysimport datetimeimport os.pathimport Conf...
    99+
    2023-01-31
    功能 程序 python
  • python ftp和sftp的例子
    python ftp 上传、下载文件#获取昨天日期TODAY = datetime.date.today() YESTERDAY = TODAY - datetime.timedelta(days=1)CURRENTDAY=YESTERDA...
    99+
    2023-01-31
    例子 python ftp
  • Python中的FTP通信模块ftplib的用法整理
    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件. FTP的工作流程及基本操作可参考协议RFC959. ftp登陆连接 from ...
    99+
    2022-06-04
    模块 通信 Python
  • 阿里云登录FTP服务器异常处理策略
    阿里云是目前全球最大的云计算服务提供商之一,其FTP服务器也是许多企业和个人使用的重要工具。然而,由于各种原因,阿里云登录FTP服务器可能会出现异常,这将严重影响用户的使用体验。本文将详细说明如何处理阿里云登录FTP服务器的异常情况。 确保...
    99+
    2023-11-12
    阿里 异常 策略
  • 如何实现FTP整站上传的批处理代码
    这篇文章主要介绍了如何实现FTP整站上传的批处理代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。@echo offrem 设置FTP服务器地址set&n...
    99+
    2023-06-08
  • 如何通过批处理修改FTP账号和密码
    这篇文章主要介绍如何通过批处理修改FTP账号和密码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方法一、批处理修改FTP账号和密码@echo offrem 指定FTP用户名set ftp...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作