Помнится появилась у меня на работе одна мерзкая рутинная задача по сведению текста из нескольких 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* не требуется, плюс можно сразу проверить есть ли такой файл и если нет - вывести ошибку, что для такой-то папки не найден требуемый файл. И все равно подушнил, но я не хотел! )
Дружище, тебя так приятно слушать. Не быстро, не медленно, интонация не утомляет. (бывший инженер по качеству, рентгенотехника. Меняю профессию, в поисках и в процессе обучения)
1. Не нужно использовать `dir` как имя переменной, потому что это имя глобальной функции dir(). 2. Для работы с файловой системой лучше использовать pathlib. 3. try...except нормальный путь для Python, но лучше просто проверять на директорию 4. Вместо переменной counter лучше пользоваться enumerate() 5. На Маке для этой задачи лучше было запустить Automator, а не писать скрипт руками
Вот это вообще красота! Где-то 1/3, может 2/3 из этого ролика информации я не знал (мне просто 14 и python только учу), но мне очень пригодились знания работы с командной строкой Windows, поэтому думаю, что в этом не очень сложно разобраться. С такими роликами становиться понятным, для чего нужны все эти функции и операции. К примеру, если нужно перебрать не 487 папок, а несколько тысяч 😨 Поэтому большое спасибо Вам за ролик. Попробую тоже по Вашему примеру написать что-то похожее)
Не соглашусь. Это все не надо учить. Это надо понять. Грубо говоря как механик не должен знать как устроен автомобиль каждого бренда. Встречает неизвестный автомобиль - берет мануал и разбирается. Затем ремонтирует.
счастливый человек, что так рано начал осваивать программирование. Очень выигрышный ход, который существенно упростит и улучшит твоё будущее. Был бы кто-то, кто бы мне в 14 посоветовал начать учить программирование, был бы благодарен этому человеку
А вы молодец, правда, очень хорошо, как настоящий учитель показываете по самым маленьким шагам как все делаете =) Я хоть и пишу на Питоне, но просто посмотреть как вы создаете программу было приятно.
Спасибо! Посмотрел все ваши видео, тоже теперь учусь программировать. Было приятно, что всё так понятно и разложено по полочкам, вы большой молодец! Жду новых ваших видео, это очень вдохновляет. 😌
олень, учиться нужно у людей, которые в этом разбираются - Бизли, Лутц, Свейгарт, Хеллман, а не у лоха в кепке!! А то "вырастешь", как этот уипан - нах никому не нужный))) зы читай книги, лентяй)
Поставил лайк за шикарный видеоролик. Мне понравилась не только логика мыслительного процесса при решении настоящей задачи, но и подход к ней. А, именно: 1. появление ошибки и её решение 2. тестирование на каждом шагу написания программы с плавным переходом на debugging (отладчик) 3. поиск той или иной функции Осталось только программу описать, чтобы не забыть для чего она написана. Я думаю, что для каждой такой программы следует делать теги для быстрого поиска подобных программ из огромного множества старых. Это как искать фотку из огромного количества. Продолжайте снимать видеоролики в том же духе! Успехов всем нам!
Во втором цикле, когда нашли нужный файл можно было break добавить. Нужен же только один файл, зачем просматривать остальные, если уже нашли нужный? А ещё можно было не все файлы выбирать, а по маске "*_1.jpg".
Рекомендую почитать доку по модулю pathlib и 428 пеп на него, для более удобного апи работы с фс. Ну и лучше, конечно, написать функцию, которая принимает путь до исходной папки и путь куда складывать готовы файлы, чтобы не менять глобальный стейт через os.chdir. Т.к потом наступишь на грабли при затаскивании такого кода в другой проект, где есть логика, подвязанная на рабочую директорию.
Можно было обойтись без chdir, так как listdir принимает параметр path - та директория содержимое которой будем обходить. Плюс вместо try except, можно использовать os.path.isfile или os.path.isdir
Никак не связан с питоном и из любопытства посмотрел видео. Уж больно стало интересно как выглядит автоматизация на питоне. Видео понравилось, лайк, подписка. Если кого-нибудь захочу освоить питон, начну с вашего канала. А пока, буду смотреть все что Ютуб будет от вас предлагать. Приятно и понятно говорите.
Тоже год назад начал изучать питон, прям очень нравится, а как сел за свою первую программу то не мог оторваться. Прям на рабочем компе написал программу для проверки знаний для коллег. Спасибо большое за видосы. Кстати на iPhone мне учиться очень помогла и помогает программа pythonista даже pip пакеты туда можно ставить, рекомендую.
Спасибо. у меня бывают подобные задачи, попытался сам написать, но на бегу не получилось, отложил. я руками поиском искал нужные файлы и разносил их. Ура, долой рутину.
Спасибо за видео. Могу посоветовать вместо конкатенации использовать f-strings (f'some string value {some_variable_or_simple_code}'), как по мне, так удобнее. Или (конкретно под задачу с путями к папкам/файлам) os.path.join().
Ох как круто же это, вот так взять и что-то создать, тоже решил пойти на курсы Python в свои 35 годиков, так как учиться чему-то новому в наше время только плюс, сейчас ищу ноут))
Вы большой молодец, пожалуйста всегда продолжайте в том же духе, от просмотра получил большое удовлетворение, так что спасибо вам большое и всего самого наилучшего!!!
Спасибо! Я как раз дед Нью би, учусь Пайтону и как раз сдал домашку по ос и начал изучать трай эксепт. Так что Ваш ролик зашёл в десятку. С нетерпением жду новых, дедомотивирующих роликов! До пенсии ещё далеко, спасибо Пенсионной реформе. Может ещё успею овладеть новой специальностью. Может хоть репетитором у школоты смогу устроиться
Программа сделана качественно, под конкретную задачу. Обычно же программисты пишут для многих пользователей. Только в этом и разница)) Но скрипт можно легко поправить, если у кого-то будет другой набор данных при аналогичной задаче. Так что - зачётно сделано. И объяснение на высоте. Как программист и преподаватель оцениваю данный ролик на 5+.
Я такую задачу решал без программирования, средствами Total Commander. Сначала с помощью Ctrl+B включал отображение всех файлов текущего каталога и подкаталогов в одну кучу. А потом просто с помощью регулярного вьіражения отфильтровьівал нужное и перемещал все в отдельную папку.
Ну ты дед! Ну красава! Вдохновил меня наконец-то под свои нужды попитонить) На счёт деда это прикол, я сам тебя догоню через пару лет) изложил как надо, коротко и ясно, и весело 👍
Возможно об этом уже писали, но можно было обойтись без конкатенации строк. В случаях когда нужно подставить значение переменной в строку, можно применять %s, эта конструкция позволяет динамически добавить в строку значения переменных, объявленных в скобках после знака %. Пример: shutil.copy2(file, '../../NEW FOTO/%s' % (collection))
Обожаю такие ролики с программированием "файл менеджмента" 📁 Сам начал знакомство с Пайтоном именно на этой почве, потому что представлял, как результат можно применить на практике ⚙ Для себя подчерпнул: ✅ для копирования использовать "shutil" ✅ можно использовать "break", чтобы прогнать цикл 1 раз в тестовом режиме ✅ вместо "print" использовать debug-режим ✅ как вариант вместо "os.path.isdir" использовать связку "try... except..." Было бы интересно увидеть ролик в таком же "рутинном" формате о работе с Excel-файлами (например, как пробежаться по куче таблиц и точечно собрать из них информацию) 📗
Спасибо. Да, сам думаю что хорошо бы про Эксель снять, но нет блин реальной задачи на горизонте :) те программы что я использую - мной уже давно написаны :)
@@oldcoders Ну да, тут весь смысл именно в ПРАКТИЧНОСТИ задачи... 😏 А что используете для работы с Excel через Пайтон? Я пока только про "OpenPyXL" слышал 🤔
Openpyxl, xlrd (они одинаковые, просто для разных файлов - xlsx и xls. И pandas часто пользуюсь, удобно загрузить в датафрейм всю таблицу и делать что хош.
@@oldcoders Спасибо. Пока общаюсь с Excel только на VBA, и меня всё устраивает) Не представляю, чего нового сможет предложить Пайтон в этом плане, но интересно)
В плане обработки данных ничего нового не предложит, но зато можно выйти за границы дозволенного в VBA :) И передавать данные куда угодно и веб приложение сделать для этих данных и так далее
Недавно узнал про enumerate(). С его помощью счетчик создается: for counter, element in enumerate(list): тело цикла. Counter - индекс элемента element в list.
У меня года с 2006 остро стоит задача сортировки файлов в downloads и я постоянно дописываю нехитрый скриптик двигающий файлики по папочкам из года в год. Так мой скрипт переехал из обычного цикла со списками из listdir на os.walk(), которая немного сложнее но делает всё тоже самое только сразу создаёт и списки поддиректорий и файлов. Работать с ней немного сложнее потому что функция создаёт генераторы вместо списков, но кода получается меньше и работает она вроде как быстрее ручного обхода директорий через listdir. А после выхода 3.6 я начал постепенно переезжать на pathlib. Конкатенация путей файлов всегда меня настораживала и где только возможно я пользовал os.path.join() чтобы всё было правильно и я нигде не забыл слэш или ещё что-нибудь. Так вот, pathlib делает работу с путями культурнее и приятнее, когда разберёшься и привыкнешь, к тому же скрипт можно будет таскать с винды на линукс и обратно не переписывая, pathlib сам выберет слэши или бэкслеши для путей. Из нерешенного у меня остались штуки типа дубликатов файлов и директорий, и странные вылеты когда файлов очень много, а также что приходится придумывать сложный регекс для сортировки по директориям которые соответствуют категориям или тегам, например Wallpapers или Art. Один из последних релизов Питончика решил проблему с длиной путей... Вообщем, мой простой скриптик со временем превратился немного в комбайн, но в процессе я научился многим новым штукам, базовому рефакторингу, лаконичному коду и best practices. Короче: не используйте конкатенацию, используйте встроенные модули или проверенные библиотеки под конкретные задачи, делайте генераторы вместо списков для больших объёмов данных, не переусложняйте код и постоянно делайте проверки перед критическими операциями типа rmdir() и подобными.
Автор ролика ты просто мой кумир. В 44 заморочился с обучением, а теперь делаешь людям добро. Удачи тебе и совет: Создавай свой курс!!! Желающих будет куча)))
Работаю с векторной графикой, люблю оптимизировать постоянные задачи с помощью actions в illustrator, но это по сути запись действий. С помощью какого языка можно писать скрипты для того же illustrator? Python подойдёт?
Ну судя по тому что написано в документации: 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 . Если очень хочется.
@@oldcoders Спасибо большое за уделённое время! Хочется все изучать, и программирование и 3д, но все не охватить. Ваш канал меня вдохновил, что ещё не поздно!
Потому что dir это просто имя текущей папки, а listdir() - список файлов в ней. Если цикл по dir сделать - он будет пробегать по символам в названии :))
общепринято использовать IF , когда TRY повторяет его действие. все же try - cоздавалось для других целей, нежели аналог IF. он нужен для работы над ошибками, которые возникают, для логирования и тп. не помyю есть ли это в PEP8 , но лучше когда проще - а проще это IF.
Ну камон, при первых запроса типо пробижаться и собрать фото, выдает правильный код, в котором не нужно так грубо и ресурсоёмко использовать 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
Как говорится : лучше полчаса потерять, потом за пять минут долететь...😂 А вообще, такое обучение, на наглядных и простых примерах самое лучшее обучение и лучше, чем кучу теорий пересмотреть
Приветствую! Дай, пожалуйста, совет как свитчеру. Исходник: очень нравится экосистема apple и хочется разрабатывать приложения под iOS. С точки зрения быстрого старта в индустрии, что можешь посоветовать: изучать ли swift или python? Уточню вопрос: Стоит ли начать изучать мобильную разработку или python для быстрого поиска работы?
Сложный вопрос. Быстрее освоить - это питон однозначно. Он простой и интуитивно понятный. Но чтобы дойти до уровня Джуниор, чтобы устраиваться на работу - надо изучить более сложные и заковыристые фреймворки, где уже не просто и интуитивно непонятно. Swift я пытался изучать, мне тоже iOS нравится, мне показалось сложнее, заметно сложнее питона. Но по востребованности на рынке наверное swift разработчик более востребован (не проверял). Но по логике - чем сложнее технология, тем меньше в ней конкуренция .
Здравствуйте! Я ещё очень далек от программирования, только начинаю учить (С#) . Но могли бы подсказать в какой IDe вы работаете? По видео не понял , к сожалению. Ещё очень заинтересовала функция ( красной точки ). Такая фитча есть в VS или Atom ? Подскажите, пожалуйста!
Это PyCharm от фирмы JetBrains. У них есть разные IDE для разных языков программирования. Насчёт красной точки - она должна быть в любом дебагере, просто точка остановки программы.
Большое спасибо за это видео) Я учу программирование и уже перешел от синтаксиса к изучению библиотек. Сейчас постигаю дзен GUI :) , а конкретно tkinter. Отдельное спасибо за то, что показали, что такое дебаг. Пишу в PyCharm, но не знал про этот режим, хотя часто не мог понять, что за красная точка появляется возле строки :) У Вас очень интересный контент, а видео, на мой взгляд, очень грамотно смонтированы. Респект за контент и такой формат Еще раз спасибо)
Я в своём втором видео рассказывал. Освоил tkinter , но понял что мне не нравится дизайн и понял что десктопные приложения мало кто делает. Вся красота дизайна и все мультипользовательские приложения делают в вебе. Так что я научился делать веб-приложения и веб-интерфейсы. Я подробно обо всем рассказывал в своей самой первой серии видео.
Я хотя и "дедушка" 50 лет 😀в программировании, сейчас учусь в нетологии на DS , только, что прошли материал. Так та я АСУТП шник. Мои шаги не уверенныев питоне, но приятно осознавать то, что я понимаю код, о чем речь. А так как я "ленивый" чел в хорошем смысле слова, то освою тоже питон👍
1:20 _"если бы я делал всё это руками: заходишь в папку, выбираешь файл, выходишь, ..."_ - согласен, тупее способа нет. Для этого существуют двух-оконные файловые менеджеры (far и др.). Желание автоматизировать помешало?
У меня канал про программирование а не про оконные менеджеры. Имея в руках универсальный инструмент - Python, можно делать все что душе угодно. Освоив far - ну только файлы перемещать. Кстати ещё вариант был - дать задание подчинённому, он бы все файлы рассортировал за меня.
@@oldcoders возможно, Вы даже не представляете, что можно делать при помощи Far-manager, и насколько он удобен, даже программистам. _Однобокость - тормозит развитие_
Помнится появилась у меня на работе одна мерзкая рутинная задача по сведению текста из нескольких 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 посоветовал начать учить программирование, был бы благодарен этому человеку
А вы молодец, правда, очень хорошо, как настоящий учитель показываете по самым маленьким шагам как все делаете =) Я хоть и пишу на Питоне, но просто посмотреть как вы создаете программу было приятно.
Спасибо за реальный пример - так действительно понятнее зачем это всё!)
Спасибо! Посмотрел все ваши видео, тоже теперь учусь программировать. Было приятно, что всё так понятно и разложено по полочкам, вы большой молодец! Жду новых ваших видео, это очень вдохновляет. 😌
Отлично, очень рад! Пишите что хотелось бы увидеть, про что снять
олень, учиться нужно у людей, которые в этом разбираются - Бизли, Лутц, Свейгарт, Хеллман, а не у лоха в кепке!! А то "вырастешь", как этот уипан - нах никому не нужный)))
зы читай книги, лентяй)
Чувак, ты молодец! Смотрю тебя с самого начала!
Спасибо 🙌
Чувак, ты меня вдохновляешь, капец как!!
😀 очень рад
Поставил лайк за шикарный видеоролик.
Мне понравилась не только логика мыслительного процесса при решении настоящей задачи, но и подход к ней.
А, именно:
1. появление ошибки и её решение
2. тестирование на каждом шагу написания программы с плавным переходом на debugging (отладчик)
3. поиск той или иной функции
Осталось только программу описать, чтобы не забыть для чего она написана. Я думаю, что для каждой такой программы следует делать
теги для быстрого поиска подобных программ из огромного множества старых. Это как искать фотку из огромного количества.
Продолжайте снимать видеоролики в том же духе! Успехов всем нам!
Спасибо! Да, можно в начале программы написать комментарий для чего она и тд
Очень интересно! Пожалуйста продолжайте выкладывать видео! Всë понятно объясняете. Благодарю Вас!
Спасибо! Выкладываю :)
Спасибо за полезное, увлекательное, понятное и познавательное видео. И за ссылку на бесплатный ознакомительный курс. 👍
Во втором цикле, когда нашли нужный файл можно было break добавить. Нужен же только один файл, зачем просматривать остальные, если уже нашли нужный? А ещё можно было не все файлы выбирать, а по маске "*_1.jpg".
Спасибо вам большое, что на самом деле показываете проекты и как это делается.
Glad to see you again. We need more videos like this one. Thanks for your job !
Will do!
Отдельное спасибо за блок по использованию Debug. Теперь все будет ещё «профессиональнее» ).
просто бомбище! вдохновляешь безумно!
Спасибо за видео!!! Действительно интересно наблюдать за решением реальной задачи.
Сплошное удовольствие от познания нового ❤
Классно. Без лишней воды. Жирный вам лайк)))
Рекомендую почитать доку по модулю pathlib и 428 пеп на него, для более удобного апи работы с фс. Ну и лучше, конечно, написать функцию, которая принимает путь до исходной папки и путь куда складывать готовы файлы, чтобы не менять глобальный стейт через os.chdir. Т.к потом наступишь на грабли при затаскивании такого кода в другой проект, где есть логика, подвязанная на рабочую директорию.
Спасибо!
Только знакомлюсь с темой, Ваши видео супер! Настолько это круто и интересно)
Спасибо за видео! По возможности почаще выходи в эфир!
Вот сегодня новое видео вышло :)
Спасибо за крутое видео! Приятно наблюдать за решением конкретной задачи, а не какой-то абстрактной 🔥👍
Обучение Python с нуля. Мой опыт - ruclips.net/video/LYxUvim8hl0/видео.html
Рада видеть!! Удачи!
Можно было обойтись без chdir, так как listdir принимает параметр path - та директория содержимое которой будем обходить. Плюс вместо try except, можно использовать os.path.isfile или os.path.isdir
Спасибо!
Большое спасибо! Нередко нужно работать именно с файлами и папками.
ты просто гений, лучший туторил
Никак не связан с питоном и из любопытства посмотрел видео. Уж больно стало интересно как выглядит автоматизация на питоне.
Видео понравилось, лайк, подписка. Если кого-нибудь захочу освоить питон, начну с вашего канала. А пока, буду смотреть все что Ютуб будет от вас предлагать.
Приятно и понятно говорите.
Спасибо! 🙌
Спасибо, тезка, интересно рассказываешь)
Очень круто видео, показывается логика разработки, спасибо. Это лучшее объяснение
Огромное спасибо, очень круто получилось!!!
Я в самом начале изучения и ваше видео очень наглядно показало возможность применения!
Тоже год назад начал изучать питон, прям очень нравится, а как сел за свою первую программу то не мог оторваться. Прям на рабочем компе написал программу для проверки знаний для коллег. Спасибо большое за видосы. Кстати на iPhone мне учиться очень помогла и помогает программа pythonista даже pip пакеты туда можно ставить, рекомендую.
Очень чётко , респект. Продолжайте ваше дело 👍
Рад видеть главного деда)))
Взаимно 🙌
Ваш стиль подачи материала - 🔥 Можно кучу тренеров в онлайн школах программирования заменить вашим объяснением
☺️☺️☺️ вроде обычно объясняю. Но спасибо!
@@oldcoders шикарно обьясняете. 👍
Спасибо за видео)) Очень круто учить программирование на примерах!!
Думаю скоро ещё одно видео из этой серии выпущу
Братик, огромный респект тебе, начинаю потихоньку вникать в питон, надеюсь скоро брошу работу в такси!
да, прекрасный метод подачи информации. спасибо!!
продолжай, не останавливайся!
Спасибо большое за урок. Голос очень приятный и все очень доходчиво.
Классно! Супер! Ты большой молодец, снимай еще
Огонь просто! Закончу учиться на Степике - пойду на Нетологию
Спасибо. у меня бывают подобные задачи, попытался сам написать, но на бегу не получилось, отложил. я руками поиском искал нужные файлы и разносил их. Ура, долой рутину.
Спасибо за видео. Могу посоветовать вместо конкатенации использовать f-strings (f'some string value {some_variable_or_simple_code}'), как по мне, так удобнее. Или (конкретно под задачу с путями к папкам/файлам) os.path.join().
Спасибо!! Да!
для работы с путями файлов надо использовать pathlib, плюшек очень много
ну ты просто крут! молодчина! приятно посмотреть...
вы умничка. вдохновляете на большее)
пришла посмотреть, что за программа для автоматизации рутины. Итог: наконец-то поняла как пользоваться дебагером. Спасибо
Четко, ясно и понятно. Ставлю лайк! И подписываюсь!
Спасибо. Через пару дней выйдет еще одно видео из этой серии.
Ох как круто же это, вот так взять и что-то создать, тоже решил пойти на курсы Python в свои 35 годиков, так как учиться чему-то новому в наше время только плюс, сейчас ищу ноут))
Дякую за відео, цікаво дивитись за вирішенням реальної задачі!
Спасибо. Очень понятно, просто.
Ещё можно в обработку номера папки перед созданием - добавить обработку пробелов, или заменить их на символ нуля, например.
Спасибо! Очень крутой контент для начинающих разработчиков. Жду новых видео =)
Вы большой молодец, пожалуйста всегда продолжайте в том же духе, от просмотра получил большое удовлетворение, так что спасибо вам большое и всего самого наилучшего!!!
Спасибо
Потрясающе!!!! СПАСИБО, СПАСИБО ЗА ВИДЕО!!!!
Спасибо! Я как раз дед Нью би, учусь Пайтону и как раз сдал домашку по ос и начал изучать трай эксепт. Так что Ваш ролик зашёл в десятку. С нетерпением жду новых, дедомотивирующих роликов! До пенсии ещё далеко, спасибо Пенсионной реформе. Может ещё успею овладеть новой специальностью. Может хоть репетитором у школоты смогу устроиться
😀👌🤘
Вот такой контент, само то что надо!
Красавчик!!! Четкий видос!
Программа сделана качественно, под конкретную задачу. Обычно же программисты пишут для многих пользователей. Только в этом и разница))
Но скрипт можно легко поправить, если у кого-то будет другой набор данных при аналогичной задаче.
Так что - зачётно сделано. И объяснение на высоте. Как программист и преподаватель оцениваю данный ролик на 5+.
Спасибо!
Сколько видосов смотрю)Но после этого реально все понял)Крут)))))
Я такую задачу решал без программирования, средствами Total Commander. Сначала с помощью Ctrl+B включал отображение всех файлов текущего каталога и подкаталогов в одну кучу. А потом просто с помощью регулярного вьіражения отфильтровьівал нужное и перемещал все в отдельную папку.
Хороший пример!!! Как раз что оо подобное мне нужно сделать с огромным дампом файлов, попробую пайтон
Видос -просто бомба! Спасибо огромное!
Ну ты дед! Ну красава! Вдохновил меня наконец-то под свои нужды попитонить)
На счёт деда это прикол, я сам тебя догоню через пару лет) изложил как надо, коротко и ясно, и весело 👍
Класс :)) 👍
Возможно об этом уже писали, но можно было обойтись без конкатенации строк. В случаях когда нужно подставить значение переменной в строку, можно применять %s, эта конструкция позволяет динамически добавить в строку значения переменных, объявленных в скобках после знака %.
Пример:
shutil.copy2(file, '../../NEW FOTO/%s' % (collection))
Да, или наверняка f-строкой можно было обойтись . Но я стараюсь максимально проще и понятней
Обожаю такие ролики с программированием "файл менеджмента" 📁 Сам начал знакомство с Пайтоном именно на этой почве, потому что представлял, как результат можно применить на практике ⚙
Для себя подчерпнул:
✅ для копирования использовать "shutil"
✅ можно использовать "break", чтобы прогнать цикл 1 раз в тестовом режиме
✅ вместо "print" использовать debug-режим
✅ как вариант вместо "os.path.isdir" использовать связку "try... except..."
Было бы интересно увидеть ролик в таком же "рутинном" формате о работе с Excel-файлами (например, как пробежаться по куче таблиц и точечно собрать из них информацию) 📗
Спасибо. Да, сам думаю что хорошо бы про Эксель снять, но нет блин реальной задачи на горизонте :) те программы что я использую - мной уже давно написаны :)
@@oldcoders Ну да, тут весь смысл именно в ПРАКТИЧНОСТИ задачи... 😏
А что используете для работы с Excel через Пайтон? Я пока только про "OpenPyXL" слышал 🤔
Openpyxl, xlrd (они одинаковые, просто для разных файлов - xlsx и xls. И pandas часто пользуюсь, удобно загрузить в датафрейм всю таблицу и делать что хош.
@@oldcoders Спасибо. Пока общаюсь с Excel только на VBA, и меня всё устраивает) Не представляю, чего нового сможет предложить Пайтон в этом плане, но интересно)
В плане обработки данных ничего нового не предложит, но зато можно выйти за границы дозволенного в VBA :) И передавать данные куда угодно и веб приложение сделать для этих данных и так далее
Отличное видео! На маке конечно быстрее было бы встроенным поисковиком это сделать, но в качестве тренировки - самое то!
Недавно узнал про enumerate(). С его помощью счетчик создается: for counter, element in enumerate(list): тело цикла. Counter - индекс элемента element в list.
У меня года с 2006 остро стоит задача сортировки файлов в downloads и я постоянно дописываю нехитрый скриптик двигающий файлики по папочкам из года в год. Так мой скрипт переехал из обычного цикла со списками из listdir на os.walk(), которая немного сложнее но делает всё тоже самое только сразу создаёт и списки поддиректорий и файлов. Работать с ней немного сложнее потому что функция создаёт генераторы вместо списков, но кода получается меньше и работает она вроде как быстрее ручного обхода директорий через listdir.
А после выхода 3.6 я начал постепенно переезжать на pathlib. Конкатенация путей файлов всегда меня настораживала и где только возможно я пользовал os.path.join() чтобы всё было правильно и я нигде не забыл слэш или ещё что-нибудь. Так вот, pathlib делает работу с путями культурнее и приятнее, когда разберёшься и привыкнешь, к тому же скрипт можно будет таскать с винды на линукс и обратно не переписывая, pathlib сам выберет слэши или бэкслеши для путей.
Из нерешенного у меня остались штуки типа дубликатов файлов и директорий, и странные вылеты когда файлов очень много, а также что приходится придумывать сложный регекс для сортировки по директориям которые соответствуют категориям или тегам, например Wallpapers или Art. Один из последних релизов Питончика решил проблему с длиной путей...
Вообщем, мой простой скриптик со временем превратился немного в комбайн, но в процессе я научился многим новым штукам, базовому рефакторингу, лаконичному коду и best practices.
Короче: не используйте конкатенацию, используйте встроенные модули или проверенные библиотеки под конкретные задачи, делайте генераторы вместо списков для больших объёмов данных, не переусложняйте код и постоянно делайте проверки перед критическими операциями типа rmdir() и подобными.
Автор ролика ты просто мой кумир. В 44 заморочился с обучением, а теперь делаешь людям добро. Удачи тебе и совет: Создавай свой курс!!! Желающих будет куча)))
Спасибо!! А какой курс по вашему должен быть? Основы Питона - таких курсов много, бесплатных и хороших.
требуем следующий части
Есть видео из этой серии, python + excel
Люблю реальне задачи, а оптимизировать рутину ещё больше
Спасибо за видео! Очень классно и понятно все!
В идеале конечно ещё обернуть в функции и добавить if __name__ == '__main__'. Так хотя бы новички будут сразу правильный код писать.
спасибо большое за обучение, очень доступно !
Спасибо за мотивацию)
Через один ролик будет про ещё одну реальную задачу которую я решал , связано с Экселем
@@oldcoders Будем ждать)
Очень интересно! Спасибо!
Надеюсь пригодится :)
Классное видео! Как называется среда разработки?
PyCharm
Работаю с векторной графикой, люблю оптимизировать постоянные задачи с помощью actions в illustrator, но это по сути запись действий. С помощью какого языка можно писать скрипты для того же illustrator? Python подойдёт?
Ну судя по тому что написано в документации: 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 . Если очень хочется.
@@oldcoders Спасибо большое за уделённое время! Хочется все изучать, и программирование и 3д, но все не охватить. Ваш канал меня вдохновил, что ещё не поздно!
Конечно не поздно! Супер, я рад!
Спасибо за видео. А почему во втором цикле идет не for file in dir?
Потому что dir это просто имя текущей папки, а listdir() - список файлов в ней.
Если цикл по dir сделать - он будет пробегать по символам в названии :))
общепринято использовать IF , когда TRY повторяет его действие. все же try - cоздавалось для других целей, нежели аналог IF. он нужен для работы над ошибками, которые возникают, для логирования и тп. не помyю есть ли это в PEP8 , но лучше когда проще - а проще это IF.
Спасибо! Очень полезное видео!
Ну камон, при первых запроса типо пробижаться и собрать фото, выдает правильный код, в котором не нужно так грубо и ресурсоёмко использовать 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
Спасибо!! Очень круто. Но все таки совсем начинающему сложновато. Далеко от «простой человеческой» логики. А glob glob я вообще первый раз вижу 😵
Как говорится : лучше полчаса потерять, потом за пять минут долететь...😂 А вообще, такое обучение, на наглядных и простых примерах самое лучшее обучение и лучше, чем кучу теорий пересмотреть
Спасибо за видео. Какой использован IDE?
PyCharm
8:20 А можно использовать countine вместо pass ?
Думаю да! В комментариях даже сказали что правильней continue
@@oldcoders Cпасибо за ответ)
Приветствую! Отличное видео, спасибо. Скажи пожалуйста, что за среда разработки?
PyCharm
Приветствую! Дай, пожалуйста, совет как свитчеру. Исходник: очень нравится экосистема apple и хочется разрабатывать приложения под iOS. С точки зрения быстрого старта в индустрии, что можешь посоветовать: изучать ли swift или python? Уточню вопрос: Стоит ли начать изучать мобильную разработку или python для быстрого поиска работы?
Сложный вопрос. Быстрее освоить - это питон однозначно. Он простой и интуитивно понятный. Но чтобы дойти до уровня Джуниор, чтобы устраиваться на работу - надо изучить более сложные и заковыристые фреймворки, где уже не просто и интуитивно непонятно.
Swift я пытался изучать, мне тоже iOS нравится, мне показалось сложнее, заметно сложнее питона. Но по востребованности на рынке наверное swift разработчик более востребован (не проверял). Но по логике - чем сложнее технология, тем меньше в ней конкуренция .
@@oldcoders спасибо за ответ👍
Шикарное видео! Спасибо большое!
Здравствуйте!
Я ещё очень далек от программирования, только начинаю учить (С#) . Но могли бы подсказать в какой IDe вы работаете? По видео не понял , к сожалению.
Ещё очень заинтересовала функция ( красной точки ). Такая фитча есть в VS или Atom ?
Подскажите, пожалуйста!
Это PyCharm от фирмы JetBrains. У них есть разные IDE для разных языков программирования.
Насчёт красной точки - она должна быть в любом дебагере, просто точка остановки программы.
@@oldcoders , класс, понял .
Спасибо вам большое !
Ps - я тоже уже возрастной получается , 41 год мне. Смотрю вас , интересно +)
У вас ещё 5 лет впереди до моего возраста, так что сеньором стать успеете 😉
На C# сразу кодь в Visual Studio (не vs code). Это супер IDE. Не надо vs code, atom, vim использовать.
Simple Code канал найди. Там найдешь как дебажить в Visual Studio. И по шарпу видео годные
Большое спасибо за это видео) Я учу программирование и уже перешел от синтаксиса к изучению библиотек. Сейчас постигаю дзен GUI :) , а конкретно tkinter.
Отдельное спасибо за то, что показали, что такое дебаг. Пишу в PyCharm, но не знал про этот режим, хотя часто не мог понять, что за красная точка появляется возле строки :)
У Вас очень интересный контент, а видео, на мой взгляд, очень грамотно смонтированы. Респект за контент и такой формат
Еще раз спасибо)
Спасибо за добрые слова! 🙌
@@oldcoders , что Вы используете для создания графического интерфейса? Если нет секрет)
Я в своём втором видео рассказывал. Освоил tkinter , но понял что мне не нравится дизайн и понял что десктопные приложения мало кто делает. Вся красота дизайна и все мультипользовательские приложения делают в вебе. Так что я научился делать веб-приложения и веб-интерфейсы. Я подробно обо всем рассказывал в своей самой первой серии видео.
Я хотя и "дедушка" 50 лет 😀в программировании, сейчас учусь в нетологии на DS , только, что прошли материал. Так та я АСУТП шник. Мои шаги не уверенныев питоне, но приятно осознавать то, что я понимаю код, о чем речь. А так как я "ленивый" чел в хорошем смысле слова, то освою тоже питон👍
Давай ещё задачи на Codewars!
Будет
1:20 _"если бы я делал всё это руками: заходишь в папку, выбираешь файл, выходишь, ..."_ - согласен, тупее способа нет.
Для этого существуют двух-оконные файловые менеджеры (far и др.). Желание автоматизировать помешало?
У меня канал про программирование а не про оконные менеджеры. Имея в руках универсальный инструмент - Python, можно делать все что душе угодно. Освоив far - ну только файлы перемещать.
Кстати ещё вариант был - дать задание подчинённому, он бы все файлы рассортировал за меня.
@@oldcoders возможно, Вы даже не представляете, что можно делать при помощи Far-manager, и насколько он удобен, даже программистам.
_Однобокость - тормозит развитие_
Возможно Far великолепный продукт. Но наша цель - освоить программирование.
В модуле os есть walk, как раз для таких случаев. Заходит во все папки и отбирает файлы.