Пишу простую, но реальную программу на Python. Автоматизирую свою рутину.

Поделиться
HTML-код
  • Опубликовано: 27 дек 2024

Комментарии • 480

  • @robot_pyotr
    @robot_pyotr 2 года назад +231

    Помнится появилась у меня на работе одна мерзкая рутинная задача по сведению текста из нескольких txt-файлов в .doc документ. А в doc файле, перед началом куска текста нужно было сделать заголовок с текстом из названия файла.
    Документов было около 5к, в разных папках. Начальник запряг 3 человека на эту работу, т.к. нужно было сделать срочно до конца рабочего дня.
    Мы поделили файлы и приступили к работе. По-началу всё шло бодренько, но через полчаса стало понятно, что до конца рабочего дня мы точно не успеем такими темпами.
    После этого мне в голову пришла идея автоматизировать задачу, но вот беда: на работе нельзя ничего установить на ПК, т.к. действует запрет групповой политики на запуск и исполнение неразрешённого софта, а нормального ПК без ограничений групповой политики не было.
    Я вышел покурить и в курилке меня осенило "можно же использовать макросы vba из самого MS офиса"!
    До этого я никогда не работал с vba, но в качестве хобби изучал дома С#. Раскуривая скудные мануалы по vba, чертыхаясь, я принялся писать макрос. Писал его около часа. Всё это время на меня шипели коллеги за то, что я не копирую файлики, а занимаюсь какой-то неведомой фигнёй.
    И вот макрос был написан. Он заходил в папки, считывал txt файлы и писал их в созданный через этот же макрос doc файл, не забывая формировать заголовки. Затем макрос сохранял doc файл в аккуратную папку "Обработано".
    Все файлы макрос обработал секунд за 10. В это же время мои коллеги обработали около 1/4 от всего объёма.
    Оставшиеся 4 часа до конца рабочего дня мы отдыхали.

    • @oldcoders
      @oldcoders  2 года назад +40

      Шикарная история! Всегда впечатляет НАСКОЛЬКО компьютеры могут экономить время.

    • @msvru
      @msvru 2 года назад +12

      По работе нужно было забить большое количество данных в базу 1С через очень неудобный web интерфейс. Поскольку творческие задачи гораздо интереснее монотонных, написал скрипт на autoit (на моём рабочем ПК я админ) и весь процесс я тупил в телефон, поглядывая как трудится мой скрипт тыкая в кнопочки и заполняя поля.

    • @ВладимирОсадчий-р5о
      @ВладимирОсадчий-р5о Год назад +7

      Да, воодушевляет изучить программирование. Хотя бы для личного развития. Пример шикарный! 👍👍👍

  • @RadicalCrab
    @RadicalCrab 2 года назад +182

    Хотел вставить 5 копеек по коду, но потом подумал что так будет слишком душно, поэтому напишу свой лайфхак по практике программирования: я ходил по форумам где тусуются начинающие изучать программирование студенты и писал для них бесплатно программы, под их относительно простые учебные задачи. Это помогло мне набить руку с использованием фактически неограниченного генератора вполне осмысленных заданий. А автору спасибо за контент, всегда рад когда кто-то открывает для себя новые интересы, особенно если это программирование )

    • @oldcoders
      @oldcoders  2 года назад +11

      Не! Напишите пожалуйста про код, как оптимальнее было бы. Только не в плане экономии памяти, типа лучше кортеж вместо списка или конкатенация много памяти ест, а именно что нить интересное 😀

    • @RadicalCrab
      @RadicalCrab 2 года назад +38

      @@oldcoders оптимизировать по памяти или скорости одноразовые утилиты смысла, конечно, мало, мне скорее бросились в глаза фундаментальные вещи - например использование исключений для обработки ошибок. Все таки обычно стараются сделать так, чтобы исключений не возникало, именно на то они и исключения, а используя их таким образом вы как бы перекладываете ответственность с программиста на интерпретатор. Обработчик исключений, в первую очередь, нужен для внештатных ситуаций, а тут ситуация прогнозируемая и вполне штатная. Ну и по мелочи там, например *chdir* не нужен, ведь *listdir* принимает путь для которого надо вернуть листинг или то, что *file = os.path.join(dir, dir + '_1.jpg')* и второй *listdir* не требуется, плюс можно сразу проверить есть ли такой файл и если нет - вывести ошибку, что для такой-то папки не найден требуемый файл. И все равно подушнил, но я не хотел! )

    • @oldcoders
      @oldcoders  2 года назад +47

      Классно, спасибо!! Ничего не душнилово, все так и есть! Реально оптимизация 👍👍 захотелось даже продолжение снять «как оптимизировать программу» 😀

    • @afkmate
      @afkmate 2 года назад +10

      @@oldcoders Было бы интересно посмотреть)

    • @TeMyAp
      @TeMyAp 2 года назад +8

      @@oldcoders сними про это продолжение, зацепило. 20-30 ещё минут

  • @Jack08F
    @Jack08F 2 года назад +43

    Дружище, тебя так приятно слушать. Не быстро, не медленно, интонация не утомляет. (бывший инженер по качеству, рентгенотехника. Меняю профессию, в поисках и в процессе обучения)

  • @СтепСтеп-п1л
    @СтепСтеп-п1л 2 года назад +19

    Спасибо вам большое! Делайте пожалуйста почаще такие видео!

    • @oldcoders
      @oldcoders  2 года назад +3

      Постараюсь! :)

  • @averse27
    @averse27 Год назад +3

    Мега полезно. Я много нового узнал из практики, а не только из теории, поэтому огромное спасибо за это видео

  • @_garik__
    @_garik__ 2 года назад +12

    Ура! Дед вернулся)))!

  • @trankov
    @trankov 2 года назад +26

    1. Не нужно использовать `dir` как имя переменной, потому что это имя глобальной функции dir().
    2. Для работы с файловой системой лучше использовать pathlib.
    3. try...except нормальный путь для Python, но лучше просто проверять на директорию
    4. Вместо переменной counter лучше пользоваться enumerate()
    5. На Маке для этой задачи лучше было запустить Automator, а не писать скрипт руками

    • @oldcoders
      @oldcoders  2 года назад +11

      Спасибо! Про Automator я даже не знал что он существует 😬😀

  • @progway8574
    @progway8574 2 года назад +26

    Вот это вообще красота! Где-то 1/3, может 2/3 из этого ролика информации я не знал (мне просто 14 и python только учу), но мне очень пригодились знания работы с командной строкой Windows, поэтому думаю, что в этом не очень сложно разобраться.
    С такими роликами становиться понятным, для чего нужны все эти функции и операции.
    К примеру, если нужно перебрать не 487 папок, а несколько тысяч
    😨
    Поэтому большое спасибо Вам за ролик. Попробую тоже по Вашему примеру написать что-то похожее)

    • @oldcoders
      @oldcoders  2 года назад +1

      Ты молодец 👍👍

    • @oldcoders
      @oldcoders  2 года назад +4

      Не соглашусь. Это все не надо учить. Это надо понять.
      Грубо говоря как механик не должен знать как устроен автомобиль каждого бренда. Встречает неизвестный автомобиль - берет мануал и разбирается. Затем ремонтирует.

    • @info_code
      @info_code Год назад +1

      А мне 13, тоже обожаю этот канал)Изучаю Питон около года, и с папками вообще дела не имела=)

    • @user-mh7yr4mg6u
      @user-mh7yr4mg6u Год назад +1

      счастливый человек, что так рано начал осваивать программирование. Очень выигрышный ход, который существенно упростит и улучшит твоё будущее. Был бы кто-то, кто бы мне в 14 посоветовал начать учить программирование, был бы благодарен этому человеку

  • @8888UNIVERSE8888
    @8888UNIVERSE8888 2 года назад +5

    А вы молодец, правда, очень хорошо, как настоящий учитель показываете по самым маленьким шагам как все делаете =) Я хоть и пишу на Питоне, но просто посмотреть как вы создаете программу было приятно.

  • @denyes342
    @denyes342 2 года назад +10

    Спасибо за реальный пример - так действительно понятнее зачем это всё!)

  • @MrAlexVelik
    @MrAlexVelik 2 года назад +45

    Спасибо! Посмотрел все ваши видео, тоже теперь учусь программировать. Было приятно, что всё так понятно и разложено по полочкам, вы большой молодец! Жду новых ваших видео, это очень вдохновляет. 😌

    • @oldcoders
      @oldcoders  2 года назад +9

      Отлично, очень рад! Пишите что хотелось бы увидеть, про что снять

    • @felix30ua
      @felix30ua 2 года назад

      олень, учиться нужно у людей, которые в этом разбираются - Бизли, Лутц, Свейгарт, Хеллман, а не у лоха в кепке!! А то "вырастешь", как этот уипан - нах никому не нужный)))
      зы читай книги, лентяй)

  • @Роман-я1ш9ш
    @Роман-я1ш9ш 2 года назад +5

    Чувак, ты молодец! Смотрю тебя с самого начала!

    • @oldcoders
      @oldcoders  2 года назад +1

      Спасибо 🙌

  • @Fedor_life
    @Fedor_life 2 года назад +4

    Чувак, ты меня вдохновляешь, капец как!!

    • @oldcoders
      @oldcoders  2 года назад

      😀 очень рад

  • @FxLikePro
    @FxLikePro 2 года назад +3

    Поставил лайк за шикарный видеоролик.
    Мне понравилась не только логика мыслительного процесса при решении настоящей задачи, но и подход к ней.
    А, именно:
    1. появление ошибки и её решение
    2. тестирование на каждом шагу написания программы с плавным переходом на debugging (отладчик)
    3. поиск той или иной функции
    Осталось только программу описать, чтобы не забыть для чего она написана. Я думаю, что для каждой такой программы следует делать
    теги для быстрого поиска подобных программ из огромного множества старых. Это как искать фотку из огромного количества.
    Продолжайте снимать видеоролики в том же духе! Успехов всем нам!

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо! Да, можно в начале программы написать комментарий для чего она и тд

  • @MrTastyFlix
    @MrTastyFlix 2 года назад +1

    Очень интересно! Пожалуйста продолжайте выкладывать видео! Всë понятно объясняете. Благодарю Вас!

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо! Выкладываю :)

  • @ВладимирОсадчий-р5о

    Спасибо за полезное, увлекательное, понятное и познавательное видео. И за ссылку на бесплатный ознакомительный курс. 👍

  • @PTolkachev
    @PTolkachev 2 года назад +4

    Во втором цикле, когда нашли нужный файл можно было break добавить. Нужен же только один файл, зачем просматривать остальные, если уже нашли нужный? А ещё можно было не все файлы выбирать, а по маске "*_1.jpg".

  • @mustafinabulhairc-0kn286
    @mustafinabulhairc-0kn286 2 года назад +1

    Спасибо вам большое, что на самом деле показываете проекты и как это делается.

  • @natisgecas5729
    @natisgecas5729 2 года назад +1

    Glad to see you again. We need more videos like this one. Thanks for your job !

  • @Steelglowhawk
    @Steelglowhawk 2 года назад +3

    Отдельное спасибо за блок по использованию Debug. Теперь все будет ещё «профессиональнее» ).

  • @AlexeyRiched
    @AlexeyRiched 2 года назад +1

    просто бомбище! вдохновляешь безумно!

  • @АлександрА-я5э3ю
    @АлександрА-я5э3ю 2 года назад +2

    Спасибо за видео!!! Действительно интересно наблюдать за решением реальной задачи.

  • @АлсуХасанова-р4у
    @АлсуХасанова-р4у 2 года назад +3

    Сплошное удовольствие от познания нового ❤

  • @igorratnik2357
    @igorratnik2357 2 года назад

    Классно. Без лишней воды. Жирный вам лайк)))

  • @kekkekov5756
    @kekkekov5756 2 года назад +5

    Рекомендую почитать доку по модулю pathlib и 428 пеп на него, для более удобного апи работы с фс. Ну и лучше, конечно, написать функцию, которая принимает путь до исходной папки и путь куда складывать готовы файлы, чтобы не менять глобальный стейт через os.chdir. Т.к потом наступишь на грабли при затаскивании такого кода в другой проект, где есть логика, подвязанная на рабочую директорию.

  • @markertlogic
    @markertlogic 2 года назад

    Только знакомлюсь с темой, Ваши видео супер! Настолько это круто и интересно)

  • @Ievgenii66
    @Ievgenii66 2 года назад

    Спасибо за видео! По возможности почаще выходи в эфир!

    • @oldcoders
      @oldcoders  2 года назад

      Вот сегодня новое видео вышло :)

  • @random.user2022
    @random.user2022 2 года назад +84

    Спасибо за крутое видео! Приятно наблюдать за решением конкретной задачи, а не какой-то абстрактной 🔥👍

    • @Fant1040
      @Fant1040 2 года назад +1

      Обучение Python с нуля. Мой опыт - ruclips.net/video/LYxUvim8hl0/видео.html

  • @ОльгаВ-ю9о
    @ОльгаВ-ю9о 2 года назад

    Рада видеть!! Удачи!

  • @vladp1793
    @vladp1793 2 года назад +3

    Можно было обойтись без chdir, так как listdir принимает параметр path - та директория содержимое которой будем обходить. Плюс вместо try except, можно использовать os.path.isfile или os.path.isdir

  • @paleface_brother
    @paleface_brother 2 года назад +1

    Большое спасибо! Нередко нужно работать именно с файлами и папками.

  • @nikoleshlizinger5506
    @nikoleshlizinger5506 2 года назад

    ты просто гений, лучший туторил

  • @pavelmelnik9952
    @pavelmelnik9952 2 года назад +1

    Никак не связан с питоном и из любопытства посмотрел видео. Уж больно стало интересно как выглядит автоматизация на питоне.
    Видео понравилось, лайк, подписка. Если кого-нибудь захочу освоить питон, начну с вашего канала. А пока, буду смотреть все что Ютуб будет от вас предлагать.
    Приятно и понятно говорите.

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо! 🙌

  • @russarRus
    @russarRus Год назад

    Спасибо, тезка, интересно рассказываешь)

  • @olorin11
    @olorin11 2 года назад +18

    Очень круто видео, показывается логика разработки, спасибо. Это лучшее объяснение

  • @magamedgeydarov1675
    @magamedgeydarov1675 2 года назад

    Огромное спасибо, очень круто получилось!!!
    Я в самом начале изучения и ваше видео очень наглядно показало возможность применения!

  • @michaelmushers6368
    @michaelmushers6368 2 года назад +1

    Тоже год назад начал изучать питон, прям очень нравится, а как сел за свою первую программу то не мог оторваться. Прям на рабочем компе написал программу для проверки знаний для коллег. Спасибо большое за видосы. Кстати на iPhone мне учиться очень помогла и помогает программа pythonista даже pip пакеты туда можно ставить, рекомендую.

  • @Dark161161
    @Dark161161 2 года назад +3

    Очень чётко , респект. Продолжайте ваше дело 👍

  • @АлексейЦиплин
    @АлексейЦиплин 2 года назад +5

    Рад видеть главного деда)))

  • @PaulCherepnin
    @PaulCherepnin 2 года назад +12

    Ваш стиль подачи материала - 🔥 Можно кучу тренеров в онлайн школах программирования заменить вашим объяснением

  • @МихаилСемерухин
    @МихаилСемерухин 2 года назад

    Спасибо за видео)) Очень круто учить программирование на примерах!!

    • @oldcoders
      @oldcoders  2 года назад

      Думаю скоро ещё одно видео из этой серии выпущу

  • @АндрейНаговин
    @АндрейНаговин 2 года назад

    Братик, огромный респект тебе, начинаю потихоньку вникать в питон, надеюсь скоро брошу работу в такси!

  • @KOLCHASIK
    @KOLCHASIK 2 года назад +1

    да, прекрасный метод подачи информации. спасибо!!

  • @nik01aich
    @nik01aich Год назад

    продолжай, не останавливайся!

  • @DaddyDenTV
    @DaddyDenTV Год назад

    Спасибо большое за урок. Голос очень приятный и все очень доходчиво.

  • @_hugoru_
    @_hugoru_ 2 года назад

    Классно! Супер! Ты большой молодец, снимай еще

  • @ОльгаЖабко
    @ОльгаЖабко 2 года назад

    Огонь просто! Закончу учиться на Степике - пойду на Нетологию

  • @mdbm500
    @mdbm500 2 года назад

    Спасибо. у меня бывают подобные задачи, попытался сам написать, но на бегу не получилось, отложил. я руками поиском искал нужные файлы и разносил их. Ура, долой рутину.

  • @alexanderchebotariov7230
    @alexanderchebotariov7230 2 года назад +9

    Спасибо за видео. Могу посоветовать вместо конкатенации использовать f-strings (f'some string value {some_variable_or_simple_code}'), как по мне, так удобнее. Или (конкретно под задачу с путями к папкам/файлам) os.path.join().

    • @oldcoders
      @oldcoders  2 года назад +3

      Спасибо!! Да!

    • @iamlexs
      @iamlexs 2 года назад +2

      для работы с путями файлов надо использовать pathlib, плюшек очень много

  • @padreromario
    @padreromario 2 года назад

    ну ты просто крут! молодчина! приятно посмотреть...

  • @ordinar007
    @ordinar007 2 года назад

    вы умничка. вдохновляете на большее)

  • @ЕлкаФ
    @ЕлкаФ 2 года назад

    пришла посмотреть, что за программа для автоматизации рутины. Итог: наконец-то поняла как пользоваться дебагером. Спасибо

  • @vladislavby4657
    @vladislavby4657 2 года назад

    Четко, ясно и понятно. Ставлю лайк! И подписываюсь!

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо. Через пару дней выйдет еще одно видео из этой серии.

  • @galeot7112
    @galeot7112 2 года назад

    Ох как круто же это, вот так взять и что-то создать, тоже решил пойти на курсы Python в свои 35 годиков, так как учиться чему-то новому в наше время только плюс, сейчас ищу ноут))

  • @sashokkuzmenko7814
    @sashokkuzmenko7814 2 года назад +6

    Дякую за відео, цікаво дивитись за вирішенням реальної задачі!

  • @Sunwait-nsk
    @Sunwait-nsk 2 года назад +1

    Спасибо. Очень понятно, просто.

  • @victormakovchik249
    @victormakovchik249 2 года назад

    Ещё можно в обработку номера папки перед созданием - добавить обработку пробелов, или заменить их на символ нуля, например.

  • @He1LBoy34
    @He1LBoy34 2 года назад +11

    Спасибо! Очень крутой контент для начинающих разработчиков. Жду новых видео =)

  • @леонидагарков-ш7н
    @леонидагарков-ш7н 2 года назад

    Вы большой молодец, пожалуйста всегда продолжайте в том же духе, от просмотра получил большое удовлетворение, так что спасибо вам большое и всего самого наилучшего!!!

  • @soul.numero
    @soul.numero 2 года назад

    Потрясающе!!!! СПАСИБО, СПАСИБО ЗА ВИДЕО!!!!

  • @berrickd8653
    @berrickd8653 2 года назад +5

    Спасибо! Я как раз дед Нью би, учусь Пайтону и как раз сдал домашку по ос и начал изучать трай эксепт. Так что Ваш ролик зашёл в десятку. С нетерпением жду новых, дедомотивирующих роликов! До пенсии ещё далеко, спасибо Пенсионной реформе. Может ещё успею овладеть новой специальностью. Может хоть репетитором у школоты смогу устроиться

  • @user-Alex248
    @user-Alex248 2 года назад +1

    Вот такой контент, само то что надо!

  • @kirillsukharzheuski
    @kirillsukharzheuski 2 года назад +1

    Красавчик!!! Четкий видос!

  • @АнатолийСкитяев-р1о
    @АнатолийСкитяев-р1о 2 года назад +1

    Программа сделана качественно, под конкретную задачу. Обычно же программисты пишут для многих пользователей. Только в этом и разница))
    Но скрипт можно легко поправить, если у кого-то будет другой набор данных при аналогичной задаче.
    Так что - зачётно сделано. И объяснение на высоте. Как программист и преподаватель оцениваю данный ролик на 5+.

  • @Roman-cp7im
    @Roman-cp7im 2 года назад

    Сколько видосов смотрю)Но после этого реально все понял)Крут)))))

  • @yuryradchenko6058
    @yuryradchenko6058 2 года назад

    Я такую задачу решал без программирования, средствами Total Commander. Сначала с помощью Ctrl+B включал отображение всех файлов текущего каталога и подкаталогов в одну кучу. А потом просто с помощью регулярного вьіражения отфильтровьівал нужное и перемещал все в отдельную папку.

  • @user-xu9tb7oe2z
    @user-xu9tb7oe2z 2 года назад

    Хороший пример!!! Как раз что оо подобное мне нужно сделать с огромным дампом файлов, попробую пайтон

  • @jurtaev1980008
    @jurtaev1980008 2 года назад

    Видос -просто бомба! Спасибо огромное!

  • @cyclestart_youtube_sosi_drova
    @cyclestart_youtube_sosi_drova 2 года назад +5

    Ну ты дед! Ну красава! Вдохновил меня наконец-то под свои нужды попитонить)
    На счёт деда это прикол, я сам тебя догоню через пару лет) изложил как надо, коротко и ясно, и весело 👍

    • @oldcoders
      @oldcoders  2 года назад +2

      Класс :)) 👍

  • @egikus16
    @egikus16 2 года назад

    Возможно об этом уже писали, но можно было обойтись без конкатенации строк. В случаях когда нужно подставить значение переменной в строку, можно применять %s, эта конструкция позволяет динамически добавить в строку значения переменных, объявленных в скобках после знака %.
    Пример:
    shutil.copy2(file, '../../NEW FOTO/%s' % (collection))

    • @oldcoders
      @oldcoders  2 года назад +1

      Да, или наверняка f-строкой можно было обойтись . Но я стараюсь максимально проще и понятней

  • @АлексейСоков-ь8и
    @АлексейСоков-ь8и 2 года назад

    Обожаю такие ролики с программированием "файл менеджмента" 📁 Сам начал знакомство с Пайтоном именно на этой почве, потому что представлял, как результат можно применить на практике ⚙
    Для себя подчерпнул:
    ✅ для копирования использовать "shutil"
    ✅ можно использовать "break", чтобы прогнать цикл 1 раз в тестовом режиме
    ✅ вместо "print" использовать debug-режим
    ✅ как вариант вместо "os.path.isdir" использовать связку "try... except..."
    Было бы интересно увидеть ролик в таком же "рутинном" формате о работе с Excel-файлами (например, как пробежаться по куче таблиц и точечно собрать из них информацию) 📗

    • @oldcoders
      @oldcoders  2 года назад +1

      Спасибо. Да, сам думаю что хорошо бы про Эксель снять, но нет блин реальной задачи на горизонте :) те программы что я использую - мной уже давно написаны :)

    • @АлексейСоков-ь8и
      @АлексейСоков-ь8и 2 года назад

      @@oldcoders Ну да, тут весь смысл именно в ПРАКТИЧНОСТИ задачи... 😏
      А что используете для работы с Excel через Пайтон? Я пока только про "OpenPyXL" слышал 🤔

    • @oldcoders
      @oldcoders  2 года назад +1

      Openpyxl, xlrd (они одинаковые, просто для разных файлов - xlsx и xls. И pandas часто пользуюсь, удобно загрузить в датафрейм всю таблицу и делать что хош.

    • @АлексейСоков-ь8и
      @АлексейСоков-ь8и 2 года назад

      @@oldcoders Спасибо. Пока общаюсь с Excel только на VBA, и меня всё устраивает) Не представляю, чего нового сможет предложить Пайтон в этом плане, но интересно)

    • @oldcoders
      @oldcoders  2 года назад +1

      В плане обработки данных ничего нового не предложит, но зато можно выйти за границы дозволенного в VBA :) И передавать данные куда угодно и веб приложение сделать для этих данных и так далее

  • @los.vladdos831
    @los.vladdos831 2 года назад

    Отличное видео! На маке конечно быстрее было бы встроенным поисковиком это сделать, но в качестве тренировки - самое то!

  • @АлександрЮшкин-о5о
    @АлександрЮшкин-о5о 2 года назад

    Недавно узнал про enumerate(). С его помощью счетчик создается: for counter, element in enumerate(list): тело цикла. Counter - индекс элемента element в list.

  • @arsenskavin130
    @arsenskavin130 2 года назад

    У меня года с 2006 остро стоит задача сортировки файлов в downloads и я постоянно дописываю нехитрый скриптик двигающий файлики по папочкам из года в год. Так мой скрипт переехал из обычного цикла со списками из listdir на os.walk(), которая немного сложнее но делает всё тоже самое только сразу создаёт и списки поддиректорий и файлов. Работать с ней немного сложнее потому что функция создаёт генераторы вместо списков, но кода получается меньше и работает она вроде как быстрее ручного обхода директорий через listdir.
    А после выхода 3.6 я начал постепенно переезжать на pathlib. Конкатенация путей файлов всегда меня настораживала и где только возможно я пользовал os.path.join() чтобы всё было правильно и я нигде не забыл слэш или ещё что-нибудь. Так вот, pathlib делает работу с путями культурнее и приятнее, когда разберёшься и привыкнешь, к тому же скрипт можно будет таскать с винды на линукс и обратно не переписывая, pathlib сам выберет слэши или бэкслеши для путей.
    Из нерешенного у меня остались штуки типа дубликатов файлов и директорий, и странные вылеты когда файлов очень много, а также что приходится придумывать сложный регекс для сортировки по директориям которые соответствуют категориям или тегам, например Wallpapers или Art. Один из последних релизов Питончика решил проблему с длиной путей...
    Вообщем, мой простой скриптик со временем превратился немного в комбайн, но в процессе я научился многим новым штукам, базовому рефакторингу, лаконичному коду и best practices.
    Короче: не используйте конкатенацию, используйте встроенные модули или проверенные библиотеки под конкретные задачи, делайте генераторы вместо списков для больших объёмов данных, не переусложняйте код и постоянно делайте проверки перед критическими операциями типа rmdir() и подобными.

  • @Troubleshooter539
    @Troubleshooter539 2 года назад +2

    Автор ролика ты просто мой кумир. В 44 заморочился с обучением, а теперь делаешь людям добро. Удачи тебе и совет: Создавай свой курс!!! Желающих будет куча)))

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо!! А какой курс по вашему должен быть? Основы Питона - таких курсов много, бесплатных и хороших.

  • @АлмазМ-й4ф
    @АлмазМ-й4ф Год назад

    требуем следующий части

    • @oldcoders
      @oldcoders  Год назад

      Есть видео из этой серии, python + excel

  • @Tommy7417
    @Tommy7417 2 года назад

    Люблю реальне задачи, а оптимизировать рутину ещё больше

  • @alekseychurikov3693
    @alekseychurikov3693 2 года назад

    Спасибо за видео! Очень классно и понятно все!

  • @rucat284
    @rucat284 2 года назад

    В идеале конечно ещё обернуть в функции и добавить if __name__ == '__main__'. Так хотя бы новички будут сразу правильный код писать.

  • @powerquerypowerbi7808
    @powerquerypowerbi7808 2 года назад

    спасибо большое за обучение, очень доступно !

  • @kst5161
    @kst5161 2 года назад

    Спасибо за мотивацию)

    • @oldcoders
      @oldcoders  2 года назад

      Через один ролик будет про ещё одну реальную задачу которую я решал , связано с Экселем

    • @kst5161
      @kst5161 2 года назад

      @@oldcoders Будем ждать)

  • @sergioborussa
    @sergioborussa 2 года назад +1

    Очень интересно! Спасибо!

    • @oldcoders
      @oldcoders  2 года назад +1

      Надеюсь пригодится :)

  • @NineTales46
    @NineTales46 2 года назад

    Классное видео! Как называется среда разработки?

  • @akdesign5467
    @akdesign5467 2 года назад

    Работаю с векторной графикой, люблю оптимизировать постоянные задачи с помощью actions в illustrator, но это по сути запись действий. С помощью какого языка можно писать скрипты для того же illustrator? Python подойдёт?

    • @oldcoders
      @oldcoders  2 года назад +1

      Ну судя по тому что написано в документации: Build panels in HTML, CSS and JavaScript. Build plug-ins in C++ in your favorite Windows or MacOS development tools. Build scripts in JavaScript, AppleScript, or VBScript.
      Похоже Python не поддерживается. Лучше тогда учите JavaScript. Пригодится.
      Хотя энтузиасты в интернете пишут что можно присобачить и Питон для скриптов AI . Если очень хочется.

    • @akdesign5467
      @akdesign5467 2 года назад

      @@oldcoders Спасибо большое за уделённое время! Хочется все изучать, и программирование и 3д, но все не охватить. Ваш канал меня вдохновил, что ещё не поздно!

    • @oldcoders
      @oldcoders  2 года назад +1

      Конечно не поздно! Супер, я рад!

  • @nikonlaw
    @nikonlaw 2 года назад

    Спасибо за видео. А почему во втором цикле идет не for file in dir?

    • @oldcoders
      @oldcoders  2 года назад +1

      Потому что dir это просто имя текущей папки, а listdir() - список файлов в ней.
      Если цикл по dir сделать - он будет пробегать по символам в названии :))

  • @СергейСабуров-р9ж
    @СергейСабуров-р9ж 2 года назад

    общепринято использовать IF , когда TRY повторяет его действие. все же try - cоздавалось для других целей, нежели аналог IF. он нужен для работы над ошибками, которые возникают, для логирования и тп. не помyю есть ли это в PEP8 , но лучше когда проще - а проще это IF.

  • @ДмитрийВасильев-щ3и

    Спасибо! Очень полезное видео!

  • @ThePirateHistory
    @ThePirateHistory 2 года назад +1

    Ну камон, при первых запроса типо пробижаться и собрать фото, выдает правильный код, в котором не нужно так грубо и ресурсоёмко использовать try except, а так изменение директории. А так же работа со строками, это ужас, сложно следить редактировать, ведь есть такие вещи как f стринги, легчайшие. Этот синтаксис уже так давно, лучше его использовать, качество кода моментом повышается, а так же читаемость, и редактируемость.
    Так же есть функции чтобы строить универсальный путь до файлов как os.path.join() пример: "os.path.join('newphotos', 'photo')"
    Так же при работе с файлами есть прекрасный метод который разобьёт весь путь файла универсально file.split(os.sep).
    Так же при работе с папками не нужно постоянно менять деректорию туда сюда чтобы создать папки, тем более папки в папках, для это есть функция os.makedirs(new_path_to_photo_folder, exist_ok=True)
    Вообщем вот код который собрал за минут 20 с написанием данного текста. Советую гуглить, множество вещей уже написано и написано правильно-оптимизировано, при этом кайф что ты что-то создал будет ещё больше, так как смотришь на код чистый красивый, прям настрое внизу живота появляется.
    pastebin . com / nPq7egRJ

    • @oldcoders
      @oldcoders  2 года назад +1

      Спасибо!! Очень круто. Но все таки совсем начинающему сложновато. Далеко от «простой человеческой» логики. А glob glob я вообще первый раз вижу 😵

  • @КонстантинГомзин
    @КонстантинГомзин Год назад +1

    Как говорится : лучше полчаса потерять, потом за пять минут долететь...😂 А вообще, такое обучение, на наглядных и простых примерах самое лучшее обучение и лучше, чем кучу теорий пересмотреть

  • @ASh-ki6ox
    @ASh-ki6ox 2 года назад

    Спасибо за видео. Какой использован IDE?

  • @topgames5929
    @topgames5929 2 года назад

    8:20 А можно использовать countine вместо pass ?

    • @oldcoders
      @oldcoders  2 года назад

      Думаю да! В комментариях даже сказали что правильней continue

    • @topgames5929
      @topgames5929 2 года назад

      @@oldcoders Cпасибо за ответ)

  • @viktorlov
    @viktorlov 2 года назад

    Приветствую! Отличное видео, спасибо. Скажи пожалуйста, что за среда разработки?

  • @Sergio-eg1ex
    @Sergio-eg1ex 2 года назад

    Приветствую! Дай, пожалуйста, совет как свитчеру. Исходник: очень нравится экосистема apple и хочется разрабатывать приложения под iOS. С точки зрения быстрого старта в индустрии, что можешь посоветовать: изучать ли swift или python? Уточню вопрос: Стоит ли начать изучать мобильную разработку или python для быстрого поиска работы?

    • @oldcoders
      @oldcoders  2 года назад

      Сложный вопрос. Быстрее освоить - это питон однозначно. Он простой и интуитивно понятный. Но чтобы дойти до уровня Джуниор, чтобы устраиваться на работу - надо изучить более сложные и заковыристые фреймворки, где уже не просто и интуитивно непонятно.
      Swift я пытался изучать, мне тоже iOS нравится, мне показалось сложнее, заметно сложнее питона. Но по востребованности на рынке наверное swift разработчик более востребован (не проверял). Но по логике - чем сложнее технология, тем меньше в ней конкуренция .

    • @Sergio-eg1ex
      @Sergio-eg1ex 2 года назад

      @@oldcoders спасибо за ответ👍

  • @stas_v
    @stas_v 2 года назад

    Шикарное видео! Спасибо большое!

  • @Alonso_Kinn
    @Alonso_Kinn 2 года назад

    Здравствуйте!
    Я ещё очень далек от программирования, только начинаю учить (С#) . Но могли бы подсказать в какой IDe вы работаете? По видео не понял , к сожалению.
    Ещё очень заинтересовала функция ( красной точки ). Такая фитча есть в VS или Atom ?
    Подскажите, пожалуйста!

    • @oldcoders
      @oldcoders  2 года назад

      Это PyCharm от фирмы JetBrains. У них есть разные IDE для разных языков программирования.
      Насчёт красной точки - она должна быть в любом дебагере, просто точка остановки программы.

    • @Alonso_Kinn
      @Alonso_Kinn 2 года назад

      @@oldcoders , класс, понял .
      Спасибо вам большое !
      Ps - я тоже уже возрастной получается , 41 год мне. Смотрю вас , интересно +)

    • @oldcoders
      @oldcoders  2 года назад +1

      У вас ещё 5 лет впереди до моего возраста, так что сеньором стать успеете 😉

    • @assetkussainov
      @assetkussainov 2 года назад

      На C# сразу кодь в Visual Studio (не vs code). Это супер IDE. Не надо vs code, atom, vim использовать.

    • @assetkussainov
      @assetkussainov 2 года назад

      Simple Code канал найди. Там найдешь как дебажить в Visual Studio. И по шарпу видео годные

  • @КаналДмитрияИванова

    Большое спасибо за это видео) Я учу программирование и уже перешел от синтаксиса к изучению библиотек. Сейчас постигаю дзен GUI :) , а конкретно tkinter.
    Отдельное спасибо за то, что показали, что такое дебаг. Пишу в PyCharm, но не знал про этот режим, хотя часто не мог понять, что за красная точка появляется возле строки :)
    У Вас очень интересный контент, а видео, на мой взгляд, очень грамотно смонтированы. Респект за контент и такой формат
    Еще раз спасибо)

    • @oldcoders
      @oldcoders  2 года назад

      Спасибо за добрые слова! 🙌

    • @КаналДмитрияИванова
      @КаналДмитрияИванова 2 года назад

      @@oldcoders , что Вы используете для создания графического интерфейса? Если нет секрет)

    • @oldcoders
      @oldcoders  2 года назад

      Я в своём втором видео рассказывал. Освоил tkinter , но понял что мне не нравится дизайн и понял что десктопные приложения мало кто делает. Вся красота дизайна и все мультипользовательские приложения делают в вебе. Так что я научился делать веб-приложения и веб-интерфейсы. Я подробно обо всем рассказывал в своей самой первой серии видео.

  • @суровый_Сибиряк
    @суровый_Сибиряк 2 года назад

    Я хотя и "дедушка" 50 лет 😀в программировании, сейчас учусь в нетологии на DS , только, что прошли материал. Так та я АСУТП шник. Мои шаги не уверенныев питоне, но приятно осознавать то, что я понимаю код, о чем речь. А так как я "ленивый" чел в хорошем смысле слова, то освою тоже питон👍

  • @RenderDragon
    @RenderDragon 2 года назад +1

    Давай ещё задачи на Codewars!

  • @LOGOSTT
    @LOGOSTT 2 года назад

    1:20 _"если бы я делал всё это руками: заходишь в папку, выбираешь файл, выходишь, ..."_ - согласен, тупее способа нет.
    Для этого существуют двух-оконные файловые менеджеры (far и др.). Желание автоматизировать помешало?

    • @oldcoders
      @oldcoders  2 года назад

      У меня канал про программирование а не про оконные менеджеры. Имея в руках универсальный инструмент - Python, можно делать все что душе угодно. Освоив far - ну только файлы перемещать.
      Кстати ещё вариант был - дать задание подчинённому, он бы все файлы рассортировал за меня.

    • @LOGOSTT
      @LOGOSTT 2 года назад

      @@oldcoders возможно, Вы даже не представляете, что можно делать при помощи Far-manager, и насколько он удобен, даже программистам.
      _Однобокость - тормозит развитие_

    • @oldcoders
      @oldcoders  2 года назад

      Возможно Far великолепный продукт. Но наша цель - освоить программирование.

  • @сашапетров-и4ч
    @сашапетров-и4ч 2 года назад +1

    В модуле os есть walk, как раз для таких случаев. Заходит во все папки и отбирает файлы.