【问题标题】:How to store a directory structure from an ftp site?如何存储来自 ftp 站点的目录结构?
【发布时间】:2012-03-20 19:38:48
【问题描述】:

我需要从 ftp 站点读取文件系统目录结构,以便稍后我可以找到要下载的特定文件(在不同时间或根本不下载)。

下载目录结构时,我使用的是以下内容

class remoteFileSystem:
    directory_structure = ?
    def parse_directory_listing(self,listing_str):
            print listing_str

    def readFileListingFTP(self,target):
            ftpaddress = target.ip_address
            ftp_serv = ftplib.FTP(ftpaddress)
            ftp_serv.login('root', 'pass')
            response = ftpserv.retrlines('LIST',parse_directory_listing)

回调还没有做任何事情,并且该类还没有用于存储目录结构的特定成员。

有没有一种很好的 Python 方式将目录列表粘贴到 xml 或本机目录结构类型对象中?即确实存在一些我不知道的东西,这将使我免于滚动自己的东西(我承认编码不多,但我一直在寻找更多的 Pythonic 做事方式)。

【问题讨论】:

    标签: python xml ftp filesystems


    【解决方案1】:

    没有我知道的本机数据类型。请注意,目录结构是一个非常简单的树结构。如果您需要的不仅仅是一个简单的树列表,我建议您滚动您自己的 Directory 和 File 对象。允许您的 Directory 对象像 dict 一样工作,您将能够执行 root['etc']['ssh']['config'] 之类的操作。

    如果你只需要一个简单的树形结构,你是否考虑过只使用嵌套的dicts?

    root = {
        'etc': {
            'passwd': None, 
            'shadow': None, 
            'ssh': {
                'config': None}
        }, 
        'lib': {
        }
    }
    

    我使用 None 作为叶节点的数据值,但如果您愿意,您当然可以将文件元数据存储在那里。导航树结构非常简单。 /etc 的列表只是 root['etc'].keys()

    最后,是最讨厌的时候了。 “我一直在寻找更多的 Pythonic 做事方式”这是什么意思?寻找想法/建议/指导是完全合理的,但归根结底,拥有工作代码的人会获胜。在这种情况下,“pythonic 的做事方式”就是去做。当然是在 Python 中:)

    【讨论】:

    • 哈!我想我的意思是 pythonic 是“不像 C/C++ 那样滥用 python”,我一直都在这样做。
    【解决方案2】:

    对于记录,另一种选择是

    list(os.walk(path))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2016-02-29
      • 1970-01-01
      相关资源
      最近更新 更多