Python получить последние файлы FTP

Мне нужно получить самые новые файлы/каталоги на моем FTP-сервере (обновлено сегодня), я обнаружил это решение:

def callback(line):
    try:
        #only use this code if you'll be dealing with that FTP server alone
        #look into dateutil module which parses dates with more flexibility
        when = datetime.strptime(re.search('[A-z]{3}\s+\d{1,2}\s\d{1,2}:\d{2}', line).group(0),     "%b %d %H:%M")
        today = datetime.today()
        if when.day == today.day and when.month == today.month:
            pass
            print "Updated file"
            #####THE CODE HERE#######
    except:
        print "failed to parse"
        return

ftp.retrlines('LIST', callback)

НО: с этим кодом я получаю только кратные «не удалось проанализировать», а также кратные отпечатки «Обновленный файл». Но мне нужно, чтобы имя файла/каталога файла/каталога было обновлено сегодня. Какой код нужно вставить в часть «#####THE CODE HERE#######», чтобы получить имя каталога?


person Francis Michels    schedule 08.08.2011    source источник


Ответы (2)


Глядя на документацию для Python ftplib, похоже, что вывод функции retrlines() будет быть строкой, где имя файла является последним «столбцом».

-rw-r--r--   1 ftp-usr  pdmaint     5305 Mar 20 09:48 INDEX

Таким образом, простое разделение и получение последнего поля должны работать. Однако это будет работать только в том случае, если в имени файла/папки нет пробелов.

name = line.split()[-1]
print(name) # Should be "INDEX"

Возможно, вы захотите использовать более сложный синтаксический анализ, если хотите обрабатывать имена с пробелами в них.

person richardolsson    schedule 08.08.2011

Используйте nlst() для получения имен файлов, а не retrlines().

Я бы не стал предполагать, что в ваших именах файлов нет пробелов.

person Katriel    schedule 08.08.2011