Чтение всех файлов из ftp-папок и подпапок в python

Я хочу прочитать все файлы изображений (*.jpg) из всех папок и подпапок ftp-папки в памяти, но не обязательно загружать их. Структура папок различается по глубине, и нужные мне файлы могут находиться в основной папке или в любой подпапке.

Я пытался использовать nlst в цикле, но я просто получаю список файлов и не могу читать файлы jpg по отдельности. Как только я прочитаю один файл, я планирую выполнить некоторую обработку файла с помощью opencv, извлечь определенную информацию в массив и перейти к следующему файлу.

Вот мой код: я еще не смог перемещаться по подпапкам.

log = []
file_list = []
for name in ftp.nlst():
        print "listing: " + name
        ftp.cwd(name)
        ftp.retrlines('LIST',callback=log.append)
        #lines = lines.split("\n") # This should split the string into an array of lines
        #filename_index = len(lines[0]) - 1
        files = (line.rsplit(None, 1)[1] for line in log)
        for file in files:
            if file.split('.')[-1] == "jpg":            
            # whatever
                    file_list.append(file)
        ftp.cwd('../')

Любая помощь приветствуется.


person Eddy    schedule 19.01.2015    source источник


Ответы (1)


Используйте импорт ОС и передайте путь к ftp-папке или подпапке в функции listdir.

import os

for file in os.listdir('<INSERT FTP FULL PATH>'):
    if file.endswith(".jpg"):
        print(file)
        ...
        or do other python processing
person Parfait    schedule 19.01.2015
comment
Я получаю сообщение об ошибке при использовании полного пути FTP с os.listdir. - person Eddy; 19.01.2015
comment
Извините за путаницу. Фактически вы должны вставить FTP-путь между одинарными кавычками. Позвольте мне отредактировать мой ответ. - person Parfait; 19.01.2015
comment
Должно быть, я делаю что-то не так. Я пробовал это, но все равно получаю ошибку WindowsError как WindowsError: [Ошибка 123] Неверный синтаксис имени файла, имени каталога или метки тома: 'ftp.xyz.com/abc%20Creative/Site%20Specific%20Creative*.*' - person Eddy; 20.01.2015
comment
Тогда ваш FTP-путь не является доступным путем в вашей операционной системе (ОС), как виртуальный каталог. Вам придется использовать модуль ftplib. См. этот ответ SO. - person Parfait; 20.01.2015