Форум сайта python.su
pyuserВ идеале да. Но на практике, для админа оно обычно не важно.
тогда уж и argparse прикрутить
Офлайн
Поправил скрипт, с учетом замечаний. С логами кажется перемудрил… :) Может попроще можно сделать? Хотелось чтоб и на экраны выводилось и в файл.
ZZZВыделяю такой кусок, потому, что если прав доступа к файлу нет, то программа вываливается при попытке получить время изменения файла
Ещё момент… Не надо в try такой здоровый кусок кода вписывать
d2 = datetime.datetime.fromtimestamp(os.path.getmtime(file))
Офлайн
ZZZпопробую пояснить. когда я делаю так:indusЯ не понял смысла фразы. Так или иначе, ловить все исключения (или Exception), это очень плохая практика.
не обязательно. конкретное исключение имеет смысл отлавливать только тогда, когда нужна конкретная информация об исключении :) во всех остальных случаях все сливается в /dev/null
Тут куда правильнее отловить только OSError, а во всех остальных случаях просто грохнуться с соответствующим матом. А то наличие реальной ошибки может быть замечено лишь тогда, когда с файлами уже произойдёт нечто страшное. В Дзен на эту тему есть: Errors should never pass silently.
try:
do smthing
except:
pass or return with specific error code
Офлайн
Не брал Питон он Явы - он ее немного старше. :) Исключения были с самого начала (правда, только строковые).
Борьба с исключениями - это очень сильный ход. И оригинальный, к тому же. Во всем остальном мире ведут борьбу за повсеместное применение исключений как сигнализации об ошибке. В целях как раз уйти от недомолвок и неоднозначностей.
Вам как, применение классов не жмет?
Офлайн
Андрей Светлов
в умных книжках по Питону пишут что взял от Жавы кое какие концецпии. Да и ООП у него больше жавское чем С++. естественно Питон старше Жавы, только причем здесь это? ;)
Я не брюсь с исключениями, вы либо не внимательно прочитали либо опять меня не поняли =) В том что я написал нет ничего оригинального уже очень давно =))) иначе я бы с удвольствием запатентовал ;)
Применение классов не жмет уже хрен знает сколько лет. А почему такой странный вопрос?
Офлайн
Исключения к заимствованным из Явы концепциям не относятся. То же касается и ООП.
Возврат заведомо неверного кода ошибки - да, классика жанра. Как и использование, например, errno для последующей расшифровки.
Но применение этого способа поверх уже существующих исключений - действительно новое слово в программировании. Можете смело патентовать!
Офлайн
Ну, пошел флуд :). Я конечно не против - это порой бывает интересно, но все-таки подскажите - логи я правильно обрабатываю? Дайте пищи для ума ;)
Офлайн
Андрей Светлов
что касается заимствований из Жавы, сейчас кроме мусорщика пока вспомнить ничего не могу, попадется что-то на глаза - запомню для дальнейших бесед =)
Естественно сами исключения и ООП не могут быть Жавскими, С++, Смаллталковскими и т.п., я имел ввиду их реализацию.
Возврат заведомо неверного кода ошибки в Питоне используется наравне с исключениями. Более того, я иногда не вижу логики автора того или иного метода при выборе между исключением или возвратом значения. Похоже это очередная борьба бобра со злом, в том смысле что исключения использовать “более правильнее в ООП” =)))))
И мне совсем не понятна ваша негативная реакция на такое использование исключений, которое я описал. Этот подход используется с начала времен появления исключений вообще. Описан в куче учебников, рекомендуется многими (не в пример мне) мудрыми гуру, используется чуть менее чем везде ( внутри того же Питона, на этом форуме ;)) Тем более если это _единственный_ способ вернуть код ошибки (иногда, предствьте себе, в рамках какой-либо конкретной системы требуется именно это!), а метод использует только исключение(-я) - приходится создавать враппер и разворачивать сие недоразумение.
Так что все таки запатентовать не получится, еще сто лет назад такие монстры как Керниган уже поюзали этот способ =)
Офлайн
А вы все первое сообщение правите? Как-то незаметно.
Конфигурируйте корневой логер, который logging.getLogger()
А пишите в свой, как и сейчас поступаете.
Вместо
my_logger.info(“%s %s %s был удален” % (file.ljust(60),d2.strftime(“%Y-%m-%d %H:%M:%S”),days_diff))
Бывает удобно писать
my_logger.info(“%s %s %s был удален”, file.ljust(60), d2.strftime(“%Y-%m-%d %H:%M:%S”), days_diff)
Не называйте d1, d2. Придумайте более говорящие названия. Испытываете проблемы с английским - пишите по русски.
Офлайн
Андрей СветловЧестно, не совсем понял, как это сделать. Взял пример отсюда http://docs.python.org/dev/howto/logging-cookbook.html. В целом я доволен результатом.
Конфигурируйте корневой логер, который logging.getLogger()
Офлайн