我需要从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方法)。
答案 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))