Как сохранить структуру каталогов с FTP-сайта? - PullRequest
0 голосов
/ 20 марта 2012

Мне нужно прочитать структуру каталогов файловой системы с сайта 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)

, где обратный вызов еще ничего не делает, и класс еще не имеет конкретных членов для хранения структуры каталогов.

Есть ли хороший питонный способ придерживатьсясписки каталогов в XML или родной объект типа структуры каталогов?то есть существует ли что-то, о чем я не знаю, это спасет меня от скручивания моих собственных вещей (я не допускаю большого количества кодирования, но я всегда ищу более питонские способы выполнения вещей).

Ответы [ 2 ]

0 голосов
/ 14 декабря 2012

Для записей альтернативой является

list(os.walk(path))
0 голосов
/ 21 марта 2012

Нет родного типа данных, о котором я знаю.Обратите внимание, что структура каталогов - довольно простая древовидная структура.Если вам нужно нечто большее, чем просто листинг дерева, я бы порекомендовал создать собственные объекты Directory и File.Позвольте вашему объекту Directory действовать как dict, и вы сможете делать такие вещи, как root['etc']['ssh']['config'].

Если вам просто нужна простая древовидная структура, рассматривали ли вы просто использование вложенных dict s?

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

Я использую None в качестве значения данных для конечного узла, но вы можете хранить метаданные файла там, если хотите.Навигация по древовидной структуре очень проста.Список /etc - это всего лишь root['etc'].keys().

Наконец-то, время любимой собаки.«Я всегда ищу более питонские способы делать вещи» Что это значит?Совершенно разумно искать идеи / советы / рекомендации, но в конце концов, парень с рабочим кодом побеждает.В этом случае «питонический способ делать вещи» - просто делать это.В Python, конечно:)

...