Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файлов по маске и дате изменения 
:(
    Опции темы
PunKHS
Дата 11.5.2014, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2012

Репутация: нет
Всего: нет



Доброго времени суток!

Помогите решить следующую задачу.
Нужно в FTP каталоге найти файлы по масками, причём в каталоге имеются файлы с одинаковыми частями имён (маска задается по этой части имени) и нужно найти файл с более поздней датой модификации.
Пример: В каталоге имеются файлы: AAA1, AAA2, AAA3, BBB1, BBB2. Ищем по маске ААА* и BBB* файлы АААx и BBBx с более поздней датой модификации. 
Вот что пока получилось:
Код

import os, fnmatch, re
masks = ["*.txt", "*.log"]
def listFiles(files, masks):
    findFiles = []
    parrent = re.compile("|".join(map(fnmatch.translate, masks)), re.I).match
    for filename in filter(parrenr, files):
        d = {filename: int((ftp.sendcmd(`MDTM ` + files))[4:])}
        findFiles.append(max(d, key=lambda i: d[i]))
    return findFiles
Помогите пожалуйста  реализовать функцию
PM MAIL   Вверх
PunKHS
Дата 13.5.2014, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2012

Репутация: нет
Всего: нет



Изменил вот так:
Код

masks = ["*.txt", "*.log"]
def listFiles(files, masks):
    findFiles = []
    parrent = re.compile("|".join(map(fnmatch.translate, masks)), re.I).match
    d = {filename: ((ftp.sendcmd('MDTM ' + filename))[4:]) for filename in filter(parrent, files)}
    findFiles.append(max(d, key=lambda i: d[i]))
    return findFiles
Но выводиться последний измененный файл по всем маскам, как сделать так, чтобы выбирал по каждой из масок в отдельности?
PM MAIL   Вверх
Romikgy
Дата 13.5.2014, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



ну запусти ф-цию 2 раза с разной маской


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
PunKHS
Дата 13.5.2014, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2012

Репутация: нет
Всего: нет



Логично, но как то криво. Может быть есть другие варианты?
PM MAIL   Вверх
PunKHS
Дата 13.5.2014, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2012

Репутация: нет
Всего: нет



Код

def listFiles(files, masks):
    findFiles = []
    for x in masks:
        parrent = re.compile(fnmatch.translate(x)).match
        d = {filename: ((ftp.sendcmd('MDTM ' + filename))[4:]) for filename in filter(parrent, files)}
        print d
        findFiles.append(max(d, key=lambda i: d[i]))
    return findFiles

Такой вариант работает! Поругайте, если что не так

Это сообщение отредактировал(а) PunKHS - 13.5.2014, 21:38
PM MAIL   Вверх
msAvtor
Дата 19.6.2014, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.6.2014

Репутация: нет
Всего: нет



ну запусти ф-цию 2 раза с разной маской 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.