Python编程:获取ftp目录下文件夹和文件

简介: Python编程:获取ftp目录下文件夹和文件

原文标题《python ftplib.FTP 获取当前路径下所有目录》


python内置库ftplib中,FTP 模块里有一个dir函数,可以打印出当前路径下所有文件,但是这个函数没有返回值,只是打印出来。


还有一个nlst函数,可以返回一个文件名的列表,但是只有文件名,没有详细信息,无法判断是否是目录。


目前我只有两个笨办法,

一个继承FTP类,自己实现一个getSubdir()方法,可以直接copy nlst()函数的源码,把cmd的字符串替换成“LIST”,再加上一个判断语句。


另外就是自己写一个类,包含一个list成员和一个getSubdir方法,方法中将每个文件append到list中,该方法作为dir函数的参数传入。


参考:

http://www.cnblogs.com/vawter/p/5987432.html

https://www.cnblogs.com/hltswd/p/6228992.html


类MyFTP就是按照上述所说第一种方法,继承。修改了源代码,将使用变得简单了,可以单独存为一个文件,导入使用,当然参考上面第2个链接就可以实现上传下载功能,这里不再赘述。


# myftp.py
from ftplib import FTP
class MyFTP(FTP):
    encoding = "gbk"  # 默认编码
    def getSubdir(self, *args):
        '''拷贝了 nlst() 和 dir() 代码修改,返回详细信息而不打印'''
        cmd = 'LIST'
        func = None
        if args[-1:] and type(args[-1]) != type(''):
            args, func = args[:-1], args[-1]
        for arg in args:
            cmd = cmd + (' ' + arg)
        files = []
        self.retrlines(cmd, files.append)
        return files
    def getdirs(self, dirname=None):
        """返回目录列表,包括文件简要信息"""
        if dirname != None:
            self.cwd(dirname)
        files = self.getSubdir()
        # 处理返回结果,只需要目录名称
        r_files = [file.split(" ")[-1] for file in files]
        # 去除. .. 
        return [file for file in r_files if file != "." and file !=".."]
    def getfiles(self, dirname=None):
        """返回文件列表,简要信息"""
        if dirname != None:
            self.cwd(dirname)  # 设置FTP当前操作的路径
        return self.nlst()  # 获取目录下的文件 
    # 这个感觉有点乱,后面再说,
    # def getalldirs(self, dirname=None):
    #     """返回文件列表,获取整个ftp所有文件夹和文件名称简要信息"""
    #     if dirname != None:
    #         self.cwd(dirname)  # 设置FTP当前操作的路径
    #     files = []
    #     dirs = set(self.getdirs()) - set(self.getfiles())
    #     if dirs != {}:
    #         for name in dirs:
    #             self.cwd("..")  # 返回上级
    #             files += self.getalldirs(name)
    #     return files
def test():
    ftp = MyFTP()  # 实例化
    ftp.connect("ip", port)  # 连接
    ftp.login("username", "password")  # 登录
    # 获取第一层目录下的文件
    # lst =ftp.getdirs()
    # print(lst)
    # for name in lst:
    #     ftp.cwd("..")  # 返回上级
    #     names = ftp.getdirs(name)
    #     print(names)
    lst = ftp.getdirs()  # 返回目录下文件夹和文件列表
    print(lst)
    ftp.quit()  # 退出
if __name__ == '__main__':
    test()

当然,使用的时候可以新建一个类,封装起来,这样便于使用


from myftp import MyFTP
class FtpData(object):
    def __init__(self):
        self.ftp = MyFTP()
        self.ftp.connect("ip", port)
        self.ftp.login("username", "password")
    def getfiles(self, dirname):
        lst =self.ftp.getdirs(dirname)
        return lst
    def __del__(self):
        self.ftp.quit()
if __name__ == '__main__':
    ftpdata = FtpData()
    lst = ftpdata.getfiles("dirname")
    print(lst)
相关文章
|
11天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
21天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
51 20
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
9月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
安全 编译器 Linux
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
92 4
|
4月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
142 0
|
4月前
|
安全 网络协议 网络安全
Windows Server 2003 FTP服务器搭建
Windows Server 2003 FTP服务器搭建
|
4月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
6月前
|
安全 Ubuntu Linux
在Linux中,如何进行FTP服务器配置?
在Linux中,如何进行FTP服务器配置?
|
7月前
|
网络协议 Unix 网络安全
FTP服务器怎么搭建?Windows server搭建FPT服务器
FTP服务器是按照FTP协议提供文件传输服务的计算机。它用于在两台计算机间安全地传输文件,支持用户权限管理和跨平台操作。FTP使用控制连接处理命令,数据连接传输文件,有PORT和PASV模式。要搭建FTP服务器,首先在Windows Server 2008 R2上安装IIS,确保选中FTP服务。接着,创建FTP文件夹作为站点根目录,通过IIS管理器添加FTP站点,配置站点信息、身份验证和权限。测试客户端通过telnet和浏览器访问FTP服务器,确认能成功登录及浏览文件。FTP常用于文件共享和管理,可通过专用工具如FlashFXP上传下载文件。
244 0
FTP服务器怎么搭建?Windows server搭建FPT服务器

热门文章

最新文章

推荐镜像

更多