如何从ftp站点存储目录结构?

时间:2012-03-20 19:38:49

标签: python xml ftp filesystems

我需要从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)

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

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

2 个答案:

答案 0 :(得分:0)

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

如果您只需要一个简单的树结构,您是否考虑过只使用嵌套的dict

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

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

最后,宠物的时间。 “我一直在寻找更多的pythonic做事方式”这是什么意思?寻找想法/建议/指导是完全合理的,但在一天结束时,拥有工作代码的人获胜。在这种情况下,“做东西的pythonic方式”就是这样做。在Python中,当然:))

答案 1 :(得分:0)

对于记录,另一种选择是

list(os.walk(path))