Пишу простую, но реальную программу на Python. Автоматизирую свою рутину.
Вставка
- Опубліковано 31 тра 2024
- Запишитесь на бесплатный курс Нетологии «Python-разработка для начинающих» - netolo.gy/iwr.
По промокоду CLUBDEDOV действует скидка 45% на платные курсы Нетологии.
Реальный пример из жизни, как я автоматизировал свою рутину при помощи языка программирования Python. Задача - обработать большое количество папок с фотографиями. А именно: выбрать по одной фото из каждой папки и рассортировать их по коллекциям.
Подробно объясняю процесс создания программы.
⭐️ Мой подробный "Роадмап деда-программиста. Python бэкенд." со скидкой 10% : stepik.org/a/133721/pay?promo...
Чат Дедов-программистов в телеграме: t.me/oldcodersclub
Наш очень крутой GitHub дедов-программистов с кучей полезной информации для начинающих - роадмапы, с чего начать и куда развиваться : github.com/OldCodersClub
00:00 Intro
00:45 Суть задачи
01:48 Очень полезная реклама
04:44 Первая подзадача - взять по одной фото из каждой папки
07:17 Ловим ошибки при помощи try - except
11:06 Вторая подзадача - рассортировать фото по папкам
12:04 Об использовании DEBUG - режима отладки
14:04 Об умении предвидеть возможные ошибки
17:13 Outro - Наука та технологія
Помнится появилась у меня на работе одна мерзкая рутинная задача по сведению текста из нескольких txt-файлов в .doc документ. А в doc файле, перед началом куска текста нужно было сделать заголовок с текстом из названия файла.
Документов было около 5к, в разных папках. Начальник запряг 3 человека на эту работу, т.к. нужно было сделать срочно до конца рабочего дня.
Мы поделили файлы и приступили к работе. По-началу всё шло бодренько, но через полчаса стало понятно, что до конца рабочего дня мы точно не успеем такими темпами.
После этого мне в голову пришла идея автоматизировать задачу, но вот беда: на работе нельзя ничего установить на ПК, т.к. действует запрет групповой политики на запуск и исполнение неразрешённого софта, а нормального ПК без ограничений групповой политики не было.
Я вышел покурить и в курилке меня осенило "можно же использовать макросы vba из самого MS офиса"!
До этого я никогда не работал с vba, но в качестве хобби изучал дома С#. Раскуривая скудные мануалы по vba, чертыхаясь, я принялся писать макрос. Писал его около часа. Всё это время на меня шипели коллеги за то, что я не копирую файлики, а занимаюсь какой-то неведомой фигнёй.
И вот макрос был написан. Он заходил в папки, считывал txt файлы и писал их в созданный через этот же макрос doc файл, не забывая формировать заголовки. Затем макрос сохранял doc файл в аккуратную папку "Обработано".
Все файлы макрос обработал секунд за 10. В это же время мои коллеги обработали около 1/4 от всего объёма.
Оставшиеся 4 часа до конца рабочего дня мы отдыхали.
Шикарная история! Всегда впечатляет НАСКОЛЬКО компьютеры могут экономить время.
По работе нужно было забить большое количество данных в базу 1С через очень неудобный web интерфейс. Поскольку творческие задачи гораздо интереснее монотонных, написал скрипт на autoit (на моём рабочем ПК я админ) и весь процесс я тупил в телефон, поглядывая как трудится мой скрипт тыкая в кнопочки и заполняя поля.
Да, воодушевляет изучить программирование. Хотя бы для личного развития. Пример шикарный! 👍👍👍
Хотел вставить 5 копеек по коду, но потом подумал что так будет слишком душно, поэтому напишу свой лайфхак по практике программирования: я ходил по форумам где тусуются начинающие изучать программирование студенты и писал для них бесплатно программы, под их относительно простые учебные задачи. Это помогло мне набить руку с использованием фактически неограниченного генератора вполне осмысленных заданий. А автору спасибо за контент, всегда рад когда кто-то открывает для себя новые интересы, особенно если это программирование )
Не! Напишите пожалуйста про код, как оптимальнее было бы. Только не в плане экономии памяти, типа лучше кортеж вместо списка или конкатенация много памяти ест, а именно что нить интересное 😀
@@oldcoders оптимизировать по памяти или скорости одноразовые утилиты смысла, конечно, мало, мне скорее бросились в глаза фундаментальные вещи - например использование исключений для обработки ошибок. Все таки обычно стараются сделать так, чтобы исключений не возникало, именно на то они и исключения, а используя их таким образом вы как бы перекладываете ответственность с программиста на интерпретатор. Обработчик исключений, в первую очередь, нужен для внештатных ситуаций, а тут ситуация прогнозируемая и вполне штатная. Ну и по мелочи там, например *chdir* не нужен, ведь *listdir* принимает путь для которого надо вернуть листинг или то, что *file = os.path.join(dir, dir + '_1.jpg')* и второй *listdir* не требуется, плюс можно сразу проверить есть ли такой файл и если нет - вывести ошибку, что для такой-то папки не найден требуемый файл. И все равно подушнил, но я не хотел! )
Классно, спасибо!! Ничего не душнилово, все так и есть! Реально оптимизация 👍👍 захотелось даже продолжение снять «как оптимизировать программу» 😀
@@oldcoders Было бы интересно посмотреть)
@@oldcoders сними про это продолжение, зацепило. 20-30 ещё минут
Дружище, тебя так приятно слушать. Не быстро, не медленно, интонация не утомляет. (бывший инженер по качеству, рентгенотехника. Меняю профессию, в поисках и в процессе обучения)
1. Не нужно использовать `dir` как имя переменной, потому что это имя глобальной функции dir().
2. Для работы с файловой системой лучше использовать pathlib.
3. try...except нормальный путь для Python, но лучше просто проверять на директорию
4. Вместо переменной counter лучше пользоваться enumerate()
5. На Маке для этой задачи лучше было запустить Automator, а не писать скрипт руками
Спасибо! Про Automator я даже не знал что он существует 😬😀
Вот это вообще красота! Где-то 1/3, может 2/3 из этого ролика информации я не знал (мне просто 14 и python только учу), но мне очень пригодились знания работы с командной строкой Windows, поэтому думаю, что в этом не очень сложно разобраться.
С такими роликами становиться понятным, для чего нужны все эти функции и операции.
К примеру, если нужно перебрать не 487 папок, а несколько тысяч
😨
Поэтому большое спасибо Вам за ролик. Попробую тоже по Вашему примеру написать что-то похожее)
Ты молодец 👍👍
Не соглашусь. Это все не надо учить. Это надо понять.
Грубо говоря как механик не должен знать как устроен автомобиль каждого бренда. Встречает неизвестный автомобиль - берет мануал и разбирается. Затем ремонтирует.
А мне 13, тоже обожаю этот канал)Изучаю Питон около года, и с папками вообще дела не имела=)
счастливый человек, что так рано начал осваивать программирование. Очень выигрышный ход, который существенно упростит и улучшит твоё будущее. Был бы кто-то, кто бы мне в 14 посоветовал начать учить программирование, был бы благодарен этому человеку
Ура! Дед вернулся)))!
👴🤘
Спасибо за видео!!! Действительно интересно наблюдать за решением реальной задачи.
Спасибо вам большое! Делайте пожалуйста почаще такие видео!
Постараюсь! :)
Во втором цикле, когда нашли нужный файл можно было break добавить. Нужен же только один файл, зачем просматривать остальные, если уже нашли нужный? А ещё можно было не все файлы выбирать, а по маске "*_1.jpg".
Спасибо вам большое, что на самом деле показываете проекты и как это делается.
А вы молодец, правда, очень хорошо, как настоящий учитель показываете по самым маленьким шагам как все делаете =) Я хоть и пишу на Питоне, но просто посмотреть как вы создаете программу было приятно.
Огромное спасибо, очень круто получилось!!!
Я в самом начале изучения и ваше видео очень наглядно показало возможность применения!
Спасибо! Посмотрел все ваши видео, тоже теперь учусь программировать. Было приятно, что всё так понятно и разложено по полочкам, вы большой молодец! Жду новых ваших видео, это очень вдохновляет. 😌
Отлично, очень рад! Пишите что хотелось бы увидеть, про что снять
олень, учиться нужно у людей, которые в этом разбираются - Бизли, Лутц, Свейгарт, Хеллман, а не у лоха в кепке!! А то "вырастешь", как этот уипан - нах никому не нужный)))
зы читай книги, лентяй)
Очень интересно! Пожалуйста продолжайте выкладывать видео! Всë понятно объясняете. Благодарю Вас!
Спасибо! Выкладываю :)
Мега полезно. Я много нового узнал из практики, а не только из теории, поэтому огромное спасибо за это видео
Спасибо за реальный пример - так действительно понятнее зачем это всё!)
просто бомбище! вдохновляешь безумно!
Рада видеть!! Удачи!
Очень чётко , респект. Продолжайте ваше дело 👍
Только знакомлюсь с темой, Ваши видео супер! Настолько это круто и интересно)
Классно! Супер! Ты большой молодец, снимай еще
Спасибо за полезное, увлекательное, понятное и познавательное видео. И за ссылку на бесплатный ознакомительный курс. 👍
Glad to see you again. We need more videos like this one. Thanks for your job !
Will do!
Спасибо за крутое видео! Приятно наблюдать за решением конкретной задачи, а не какой-то абстрактной 🔥👍
Обучение Python с нуля. Мой опыт - ua-cam.com/video/LYxUvim8hl0/v-deo.html
вы умничка. вдохновляете на большее)
Спасибо, тезка, интересно рассказываешь)
Поставил лайк за шикарный видеоролик.
Мне понравилась не только логика мыслительного процесса при решении настоящей задачи, но и подход к ней.
А, именно:
1. появление ошибки и её решение
2. тестирование на каждом шагу написания программы с плавным переходом на debugging (отладчик)
3. поиск той или иной функции
Осталось только программу описать, чтобы не забыть для чего она написана. Я думаю, что для каждой такой программы следует делать
теги для быстрого поиска подобных программ из огромного множества старых. Это как искать фотку из огромного количества.
Продолжайте снимать видеоролики в том же духе! Успехов всем нам!
Спасибо! Да, можно в начале программы написать комментарий для чего она и тд
Супер!!! Благодарю. Как раз то что надо 👌
Спасибо большое за урок. Голос очень приятный и все очень доходчиво.
Большое спасибо! Нередко нужно работать именно с файлами и папками.
Спасибо за видео! По возможности почаще выходи в эфир!
Вот сегодня новое видео вышло :)
Замечательное объяснение! Было очень интересно. Надеюсь будет ещё такое объяснение и применение в практике языка программирования. Лайк, подписка.
Сплошное удовольствие от познания нового ❤
Спасибо за видео! Очень классно и понятно все!
Очень круто видео, показывается логика разработки, спасибо. Это лучшее объяснение
Классно. Без лишней воды. Жирный вам лайк)))
Чувак, ты молодец! Смотрю тебя с самого начала!
Спасибо 🙌
спасибо большое за обучение, очень доступно !
Чувак, ты меня вдохновляешь, капец как!!
😀 очень рад
Спасибо за видео)) Очень круто учить программирование на примерах!!
Думаю скоро ещё одно видео из этой серии выпущу
Потрясающе!!!! СПАСИБО, СПАСИБО ЗА ВИДЕО!!!!
Вы большой молодец, пожалуйста всегда продолжайте в том же духе, от просмотра получил большое удовлетворение, так что спасибо вам большое и всего самого наилучшего!!!
Спасибо
Спасибо! Очень крутой контент для начинающих разработчиков. Жду новых видео =)
Тоже год назад начал изучать питон, прям очень нравится, а как сел за свою первую программу то не мог оторваться. Прям на рабочем компе написал программу для проверки знаний для коллег. Спасибо большое за видосы. Кстати на iPhone мне учиться очень помогла и помогает программа pythonista даже pip пакеты туда можно ставить, рекомендую.
да, прекрасный метод подачи информации. спасибо!!
Вот такой контент, само то что надо!
Шикарное видео! Спасибо большое!
продолжай, не останавливайся!
Видос -просто бомба! Спасибо огромное!
ну ты просто крут! молодчина! приятно посмотреть...
Спасибо. Очень понятно, просто.
Спасибо! Очень полезное видео!
Четко, ясно и понятно. Ставлю лайк! И подписываюсь!
Спасибо. Через пару дней выйдет еще одно видео из этой серии.
Сколько видосов смотрю)Но после этого реально все понял)Крут)))))
Хороший пример!!! Как раз что оо подобное мне нужно сделать с огромным дампом файлов, попробую пайтон
Красавчик!!! Четкий видос!
Очень интересное видео! Спасибо!
Братик, огромный респект тебе, начинаю потихоньку вникать в питон, надеюсь скоро брошу работу в такси!
Спасибо за видео, хороший контент!
Рекомендую почитать доку по модулю pathlib и 428 пеп на него, для более удобного апи работы с фс. Ну и лучше, конечно, написать функцию, которая принимает путь до исходной папки и путь куда складывать готовы файлы, чтобы не менять глобальный стейт через os.chdir. Т.к потом наступишь на грабли при затаскивании такого кода в другой проект, где есть логика, подвязанная на рабочую директорию.
Спасибо!
Очень интересно! Спасибо!
Надеюсь пригодится :)
Большое спасибо за Вашу работу. Мотивирует и дает дополнительные знания, расширяет кругозор.
Огонь просто! Закончу учиться на Степике - пойду на Нетологию
Ещё можно в обработку номера папки перед созданием - добавить обработку пробелов, или заменить их на символ нуля, например.
Отличное видео! На маке конечно быстрее было бы встроенным поисковиком это сделать, но в качестве тренировки - самое то!
Отдельное спасибо за блок по использованию Debug. Теперь все будет ещё «профессиональнее» ).
Можно было обойтись без chdir, так как listdir принимает параметр path - та директория содержимое которой будем обходить. Плюс вместо try except, можно использовать os.path.isfile или os.path.isdir
Спасибо!
Недавно узнал про enumerate(). С его помощью счетчик создается: for counter, element in enumerate(list): тело цикла. Counter - индекс элемента element в list.
Ваш стиль подачи материала - 🔥 Можно кучу тренеров в онлайн школах программирования заменить вашим объяснением
☺️☺️☺️ вроде обычно объясняю. Но спасибо!
@@oldcoders шикарно обьясняете. 👍
Я хотя и "дедушка" 50 лет 😀в программировании, сейчас учусь в нетологии на DS , только, что прошли материал. Так та я АСУТП шник. Мои шаги не уверенныев питоне, но приятно осознавать то, что я понимаю код, о чем речь. А так как я "ленивый" чел в хорошем смысле слова, то освою тоже питон👍
Ох как круто же это, вот так взять и что-то создать, тоже решил пойти на курсы Python в свои 35 годиков, так как учиться чему-то новому в наше время только плюс, сейчас ищу ноут))
Дякую за відео, цікаво дивитись за вирішенням реальної задачі!
ты просто гений, лучший туторил
все быстро и понятно!
Спасибо за мотивацию)
Через один ролик будет про ещё одну реальную задачу которую я решал , связано с Экселем
@@oldcoders Будем ждать)
Огромное тебе спасибо.
Познавательно, спасибо🤪
крутой формат!
Никак не связан с питоном и из любопытства посмотрел видео. Уж больно стало интересно как выглядит автоматизация на питоне.
Видео понравилось, лайк, подписка. Если кого-нибудь захочу освоить питон, начну с вашего канала. А пока, буду смотреть все что Ютуб будет от вас предлагать.
Приятно и понятно говорите.
Спасибо! 🙌
топ контент, очень интересно и доходчиво))
Очень крутые видео у тебя! Сам учу Python и django
Спасибо! Ты молодец!!
Слушай, годнота, пили ещё)
Очень позновательно
Рад видеть главного деда)))
Взаимно 🙌
Спасибо! Я как раз дед Нью би, учусь Пайтону и как раз сдал домашку по ос и начал изучать трай эксепт. Так что Ваш ролик зашёл в десятку. С нетерпением жду новых, дедомотивирующих роликов! До пенсии ещё далеко, спасибо Пенсионной реформе. Может ещё успею овладеть новой специальностью. Может хоть репетитором у школоты смогу устроиться
😀👌🤘
пришла посмотреть, что за программа для автоматизации рутины. Итог: наконец-то поняла как пользоваться дебагером. Спасибо
Большое спасибо за это видео) Я учу программирование и уже перешел от синтаксиса к изучению библиотек. Сейчас постигаю дзен GUI :) , а конкретно tkinter.
Отдельное спасибо за то, что показали, что такое дебаг. Пишу в PyCharm, но не знал про этот режим, хотя часто не мог понять, что за красная точка появляется возле строки :)
У Вас очень интересный контент, а видео, на мой взгляд, очень грамотно смонтированы. Респект за контент и такой формат
Еще раз спасибо)
Спасибо за добрые слова! 🙌
@@oldcoders , что Вы используете для создания графического интерфейса? Если нет секрет)
Я в своём втором видео рассказывал. Освоил tkinter , но понял что мне не нравится дизайн и понял что десктопные приложения мало кто делает. Вся красота дизайна и все мультипользовательские приложения делают в вебе. Так что я научился делать веб-приложения и веб-интерфейсы. Я подробно обо всем рассказывал в своей самой первой серии видео.
спасибо вам за видео
Спасибо за видео. Могу посоветовать вместо конкатенации использовать f-strings (f'some string value {some_variable_or_simple_code}'), как по мне, так удобнее. Или (конкретно под задачу с путями к папкам/файлам) os.path.join().
Спасибо!! Да!
для работы с путями файлов надо использовать pathlib, плюшек очень много
Интересно 👍
Спасибо огромное
Спасибо. у меня бывают подобные задачи, попытался сам написать, но на бегу не получилось, отложил. я руками поиском искал нужные файлы и разносил их. Ура, долой рутину.
очень полезно!
Круто!
Я смотрю, вы за 2 года очень преуспели, с чем и поздравляю!
Но у меня возник вопрос, вы уже хорошо знали английский язык, что так свободно задаете команду машине?
Спасибо!
Да, знал английский где то на уровне Upper Intermediate . Читаю я вообще хорошо, разговариваю только плохо.
Спасибо за видео! Мне, как новичку, было невероятно полезно.
Круто!!!
Классно!!!!
Ну ты дед! Ну красава! Вдохновил меня наконец-то под свои нужды попитонить)
На счёт деда это прикол, я сам тебя догоню через пару лет) изложил как надо, коротко и ясно, и весело 👍
Класс :)) 👍
Приветствую! Отличное видео, спасибо. Скажи пожалуйста, что за среда разработки?
PyCharm
Программа сделана качественно, под конкретную задачу. Обычно же программисты пишут для многих пользователей. Только в этом и разница))
Но скрипт можно легко поправить, если у кого-то будет другой набор данных при аналогичной задаче.
Так что - зачётно сделано. И объяснение на высоте. Как программист и преподаватель оцениваю данный ролик на 5+.
Спасибо!