Доброго времени суток, уважаемые. Столкнулся с такой проблемой при использовании ftplib в python: Пытаюсь получить список содержимого в директории на ftp. Для некоторых файлов retrlines('LIST', callback=log.append) возвращает год (YYYY),а для некоторых на месте года я вижу час и минуту (HH:MM). Мне казалось, что решение - использовать комманду MLSD, но, похоже, она поддерживается не всеми ftp-серверами. Возникает вопрос - есть какой-нибудь универсальный способ получить дату создания/модификации файла на ftp в полном формате (dir и т.п. отображает тоже не все)?
import ftplib
def ftp_connect(url,login,passwd,fromdir):
#Подключение к FTP и определение списка файлов
try:
ftp=ftplib.FTP(url,login,passwd)
print ("Connection successful, trying to get list of files and directories...")
ftp.cwd(fromdir)
#Записываем содержимое домашней директории
ftp.retrlines('LIST', callback=log.append)
#ftp.retrlines('MLSD', callback=log.append)
files = (';'.join(line.split()) for line in log)
directory_list = list(files)
#Разделяем полученные данные на файлы и каталоги
for str in directory_list:
s = str.split(' ')[0][0]
#Если это каталог, записываем его в спи сок подкаталогов
if s=='d':
sub_dir_list.append(str.split(';')[8])
#Если это файл, то проверяем его дату создания и скачиваем в папку с путем
#к текущей директории в названии
elif s=='-':
print (str.split(';')[1:])
ftp.quit()
return True
except ftplib.all_errors as e:
print (e)
return False
#Инициализации програмы
try:
url = 'ftp.gnu.org'
login = "Anonymous"
passwd = ""
todir = '/ftp/'
fromdir = '~/'
log = []
sub_dir_list = []
print ("Initialization successful, trying to connect...")
ftp_connect(url,login,passwd,fromdir)
except:
print ("Initialization Error")
exit()
PS. Пробовал через ftputil ее методами вроде path.getmtime и download_if_newer - результат отрицательный. getmtime там также показывает дату в странном формате, может дело в этом. PPS. Пример того, что возвращается для этого куска «кода»:
['1', '0', '0', '17864', 'Oct', '23', '2003', 'MISSING-FILES']
['2', '0', '0', '4178', 'Aug', '13', '2003', 'MISSING-FILES.README']
['1', '0', '0', '1962', 'Nov', '15', '2012', 'README']
['1', '0', '0', '405121', 'Oct', '23', '2003', 'before-2003-08-01.md5sums.asc']
['1', '0', '0', '200401', 'Mar', '05', '11:25', 'find.txt.gz']
['1', '0', '0', '386743', 'Mar', '05', '11:25', 'ls-lrRt.txt.gz']
['1', '0', '0', '954', 'Aug', '13', '2003', 'welcome.msg']
upd. Задача - скрипт на py спсобный скачать с фтп все файлы новее вчерашней даты. upd2. Похоже getmtime из ftputil все же решает мою «проблему»