43 Рекурсивный обход файлов Python

  Рет қаралды 55,655

egoroff_channel

egoroff_channel

Күн бұрын

Пікірлер: 77
@egoroffchannel
@egoroffchannel 6 ай бұрын
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@reaperzmcvell6172
@reaperzmcvell6172 6 жыл бұрын
Друг отличные курсы,пожалуйста не забрасывай!!!!!
@egoroffchannel
@egoroffchannel 6 жыл бұрын
спасибо за добрые слова)
@onemasterlomaster1829
@onemasterlomaster1829 5 жыл бұрын
а вы лайки ставьте человеку хотябы за труды, а то 314 просмотров а лайков всего 30, то есть всего 10% лайк поставило, а остальным трудно? Но зато все хотят продолжения! Но вот просто открыть видос в фоне в трех браузерах без звука и даже на низком разрешении это совсем невыполнимая задача, пока смотрите свежий видос!
@СергейМуравьев-й2ф
@СергейМуравьев-й2ф 2 жыл бұрын
Поддержу. Действительно, один из немногих курсов, на которых я понимаю что мне объясняют и как это работает. Отличный курс (прохожу на Stepik), отличный преподаватель. Спасибо за труд!
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov 2 жыл бұрын
Артём, благодарю! Отличный урок 🔥🤝👍
@AdiletAbylkairov
@AdiletAbylkairov 5 жыл бұрын
Вообще я очень редко пишу комментарии, но чел тут реально нельзя не поблагодарить тебя, у тебя самые понятные уроки, желаю что бы канал и дальше развивался!
@matthewkraev
@matthewkraev 5 жыл бұрын
Если вдруг кому то интересно... Для Mac OS, путь указывается несколько иначе... path = "/Users/.../.../..." Соответственно поменяется и строчка с добавлением i к path: print("Спускаемся " + path + "/" + i) PS Артём, Спасибо за очень крутые объяснения!
@FortKH
@FortKH 3 жыл бұрын
Для этого существует функция os.sep
@Сергей-б3й5д
@Сергей-б3й5д 3 жыл бұрын
Как всегда все доступно и понятно, браво)) удачи в развитии канала))
@ВадимСмирнов-э4ю
@ВадимСмирнов-э4ю 3 жыл бұрын
Спасибо, добрый человек!
@dochastalina8073
@dochastalina8073 5 жыл бұрын
Смотрю. Учусь. Интересно. Спасибо!
@ИринаПотёмкина-ш1л
@ИринаПотёмкина-ш1л 2 жыл бұрын
Спасибо большое!!! Очень круто!!!!
@АнастасияЕлистратова-л1ю
@АнастасияЕлистратова-л1ю Жыл бұрын
Спасибо большое за ваше видео! Я как раз столкнулась с похожей задачей и долго не понимала, что делать, потому что из os, знала только listdir. ❤
@reclreclur7203
@reclreclur7203 Жыл бұрын
Чотко, спасибо за уроки Артем!
@LastWeg
@LastWeg 5 жыл бұрын
полезное видео, благодарю за проделанную работу
@hexag0nee
@hexag0nee 2 жыл бұрын
Домашнее задание: import os a = input('Enter file name: ') b = input('Enter directory for search: ') def fileSearch(fileName, path): for i in os.listdir(path): if i == fileName: #Происходит проверка совпадения найденных файлов print('Your file found at',path+'\\'+fileName) if os.path.isdir(path+'\\'+i): #Рекурсивная функция (функция вызывается, если путь является папкой) fileSearch(fileName, path+'\\'+i) fileSearch(a,b) Я пробовал сделать задание в соответствии с приведенным примером, но дело в том, что из-за "спама" директориями выводимое сообщение с найденным файлом остается между остальными выведенными сообщениями. Если вы знаете способ, как изменить алгоритм таким образом, чтобы найденный файл выводился после "спама", прошу поделиться.
@ssd3whs727e
@ssd3whs727e 4 жыл бұрын
Артем, большое спасибо за труд. Где-то в комментах был вопрос по классам, вот тоже присоединяюсь. Было бы очень круто увидеть разбор использования конструктора, атрибутов, декораторов и т.д... Вообще супер канал, отличный курс! П.с. подборка фильмов повеселила, научная фантастика между Тарантино, такой себе бутерброд))
@ivan_kevlar
@ivan_kevlar 5 жыл бұрын
Поиск файла в папке: import os path=input() name=input() def obhod(path): for i in os.listdir(path): if (i == name): print(path + '\\' + i) if os.path.isdir(path+'\\'+i): obhod(path+'\\'+i) obhod(path)
@АнастасияСитко-х9ю
@АнастасияСитко-х9ю 2 жыл бұрын
Очень круто!
@He1LBoy34
@He1LBoy34 6 жыл бұрын
Спасибо за урок =)
@БорисБондаренко-ы1л
@БорисБондаренко-ы1л 2 жыл бұрын
Благодарю за замечательный урок)
@jojoi4818
@jojoi4818 5 жыл бұрын
Жалко, что можно поставить только один лайк!
@ahat24
@ahat24 4 жыл бұрын
Очень помог, спасибо)
@andriiew325
@andriiew325 4 жыл бұрын
За "Интерстеллар" отдельный лайк!!!
@CCxYeahBoyyy
@CCxYeahBoyyy 2 жыл бұрын
Это гениально
@Данил-у9ы8б
@Данил-у9ы8б 3 жыл бұрын
Домашнее задание: import os filmPath = 'D:\\Фильмы' def obhodFile(pathF, fileSerch, level=1): print('Level-', level, 'Content:', os.listdir(pathF)) if os.listdir(pathF).count(fileSerch) > 0: print(fileSerch, 'в', pathF) for i in os.listdir(pathF): if os.path.isdir(pathF + '\\' + i) == True: obhodFile(pathF + '\\' + i,fileSerch, level + 1) obhodFile(filmPath, 'Актеры криминального чтива.txt')
@mr.tvisteroae7452
@mr.tvisteroae7452 Жыл бұрын
захожу из за одного вопроса который непонятен в платном курсе а затягивает на несколько видео
@dmitrymitrofanov3920
@dmitrymitrofanov3920 3 жыл бұрын
спасибо
@tihon4979
@tihon4979 6 жыл бұрын
Вот это уже становится интересным!!!! ;) Интересно какие названия файлов начали парсить... passwords.txt ? xD
@tihon4979
@tihon4979 6 жыл бұрын
Было бы интересно написать парсер файлов на наличие определенного текста в строке. Полезно бывает.
@egoroffchannel
@egoroffchannel 6 жыл бұрын
@@tihon4979 название в названии файла или в содержимом файла?
@tihon4979
@tihon4979 6 жыл бұрын
@@egoroffchannel сейчас бы пригодился скрипт проверяющий все файлы в папке и записывающий в новый текстовый файл те строки, которые содержат заданное инпутом значение. Т.е. название в содержимом файлов.
@tihon4979
@tihon4979 5 жыл бұрын
@@egoroffchannel Я вот так сделал: import os path = input('Введите путь до папки: ') znach = input('Введите значение для поиска: ') file = '' out = 'output.txt' def obhod(path): # функция для обхода дирикторий for i in os.listdir(path): # обход указанной директории output_filename = open(out, 'a', encoding = 'Latin-1') #открытие файла в режиме записи (добавления данных) put = path + '/' + i # переменная в которую записывается путь до файла + '/' + название файла: (i) if os.path.isfile(put): # если i-является файлом, то: print(i, '
@tihon4979
@tihon4979 5 жыл бұрын
@@egoroffchannel Подскажи, пожалуйста, как в моем коде сделать так чтобы выводилась и записывалась в файл output.txt не только та строка, которая содержит заданное значение, но и несколько строк после неё? мне нужно еще + 2 строки ниже найденной записывать.
@mikhalpalych
@mikhalpalych 3 жыл бұрын
Можете помочь? Понимаю, что написал хрень, но конкретно где что-то не то, понять не могу Находит только файлы, которые находятся в самом path, но в других папках не находит import os path = 'C:\Games\Valheim' fileName = 'browscap.ini' def obhodfilov(path, fileName): print('Поиск файла ' + fileName + ' в ', path) for i in os.listdir(path): if i == fileName: return path + '\\' + i elif os.path.isdir(path + '\\' + i): obhodfilov(path + '\\' + i, fileName) print('Файл ', fileName, ' расположен в ', obhodfilov(path, fileName))
@ЭмирЭмир-н9з
@ЭмирЭмир-н9з 3 жыл бұрын
Подскажите как мне искать файлы в корне диска С:\
@АлексейКривчиков-м3ю
@АлексейКривчиков-м3ю 3 жыл бұрын
Не работает. При запуске интерпретатора высвечивается синтаксическая ошибка
@suprun1982
@suprun1982 5 жыл бұрын
import os path = r"C:\Media\ФІЛЬМИ ВІД ВОВИ\FILM" def obhoddir(d, name = str(input("bмя файла:"))): for i in os.listdir(d): if os.path.isdir(d + '\\' + i): obhoddir(d + '\\' + i) if os.path.isfile(d + '\\' + i): if name == i: print(d) obhoddir(path)
@suprun1982
@suprun1982 3 жыл бұрын
@Кирилл Веденин загуглите
@_mrmark
@_mrmark 2 жыл бұрын
8:40 Я не нудный, но пайчарм сразу подчеркнул ошибку.
@alex_pure
@alex_pure 2 жыл бұрын
Это предупреждение, а не ошибка. Локальное имя совпадает с глобальным. Если ты понимаешь, что делаешь, то просто проигнорируй.
@alexandershahbazov1374
@alexandershahbazov1374 5 жыл бұрын
Есть ли удобный способ запустить программу двойным кликом? Потом, будут ли примеры GUI приложений? Далее можно будет рассказать как используется Питон для разных сторон разработок (игры, странички, приложения для ПК или еще для чего-то)? Не обязательно приводить подробные примеры, просто сказать ваше мнение на этот счет. Хотя, конечно, было бы замечательно пройтись по всем этим сторонам самым простым способом, чтобы нам было наглядно видно, что Питон это делает.
@egoroffchannel
@egoroffchannel 5 жыл бұрын
если питон установлен, то можно по файлу формата .py кликать как по обычным программам и они запускаются. спасибо за предложение, подумаю что и как можно показать по поводу использования питона
@alexandershahbazov1374
@alexandershahbazov1374 5 жыл бұрын
@@egoroffchannel Спасибо
@cyberlegioner8771
@cyberlegioner8771 4 жыл бұрын
Есть к примеру pyinstaller. Соберёт все в 1 файл, и будет тебе счастье двойного клика, и на win и на linux. Все зависимости подтянет. Ну а так если в win установлен python, то двойным кликом запуститься. Но если gui, например pyside, то привет pip(придется устанавливать pyside). И чтобы консоль не выскакивала, нужно в win file.py , расширение поменять на file.pyw А вообще советую linux использовать. Там все проще, намного!
@ЕвгенийКиселев-г9ю
@ЕвгенийКиселев-г9ю 4 жыл бұрын
Забавно, что в даже в переходе на следующее видео есть рекурсия:) Артем, большое спасибо за подробные и понятные уроки!
@LusinaHarutyunyan
@LusinaHarutyunyan 3 жыл бұрын
Дорогой Артём, пожалуйста дайте ссылку на ''Разбор задачи на рекурсию "Нумеролог"'' на boosty.
@egoroffchannel
@egoroffchannel 3 жыл бұрын
boosty.to/egoroff_channel/posts/c3a3c5b6-dc53-43ce-a0b8-76ac49104b84
@LusinaHarutyunyan
@LusinaHarutyunyan 3 жыл бұрын
@@egoroffchannel спасибо!
@ЛианаЕникеич
@ЛианаЕникеич 2 жыл бұрын
интерстеллАр - это было что-то на татарском)))))
@alex_pure
@alex_pure 2 жыл бұрын
import os discName = input('Введите букву диска: ') + ':\\' fileName = input('Введите имя файла для поиска: ') def search(path): for i in os.listdir(path): if os.path.isdir(path + '\\' + i): search(path + '\\' + i) if i == fileName: return print(f'Файл находится в директории: {path}') search(discName)
@MaksimSukhodolov
@MaksimSukhodolov 2 жыл бұрын
Как же это было смешно с тем что видео с циклом про рекурсию ты сделал с рекурсией(в конце цикла видео опять попадаешь в начало цикла про рекурсию)
@АлександрК-ш
@АлександрК-ш 4 жыл бұрын
Ни кто не видел обучающий материал, как сделать рекурсивный обход файлов на Python, чтобы сразу было в коде, как что - то найти с регулярным выражением в текстовых файлах, например какое то слово или что - то ещё, изменив регулярку? При этом чтобы это были не независимые по смыслу строки, а тексты документации.
@maximchervonoshtan2059
@maximchervonoshtan2059 5 жыл бұрын
Когда указываю путь к одной или иной папке, у меня всё время выводит одно и тоже. То есть , выводит путь только к одной папке
@maximchervonoshtan2059
@maximchervonoshtan2059 5 жыл бұрын
Я так понимаю он всегда будет искать в текущей директории?
@СеменЛевчук-ъ8о
@СеменЛевчук-ъ8о 5 жыл бұрын
Единственное что я не понимаю из курса это рекурсия. Смотрю на код и глаза разбегаются в разные стороны)
@arsennedovis6455
@arsennedovis6455 5 жыл бұрын
obxodFile :)
@АлексейСухарников-с1м
@АлексейСухарников-с1м 5 жыл бұрын
Сук, ИНТЕРСТЕЛЛÁР. Это было не просто, но я дослушал
@shining_intellegence
@shining_intellegence 5 жыл бұрын
тебя в гугле забанили? ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B5%D0%BB%D0%BB%D0%B0%D1%80
@ДмитрийЯковлев-д6э
@ДмитрийЯковлев-д6э 2 жыл бұрын
Вот бы еще всё это дело в шаблон Django отдать - цены бы не было этому видео.
@kreved52
@kreved52 4 жыл бұрын
Доработал программу, чтобы искала файл, но к сожалению не смог сделать без глобальной переменной find_name,писало вот такую ошибку UnboundLocalError: local variable 'find_name' referenced before assignment в python кто знает, отпишитесь) import os path = "C:\\Users\\Kreved\\Рабочий стол\\test" name = "find.txt" find_name = '' def obhod(path,name, level=1): global find_name print("Level=", level, "Content:", os.listdir(path)) for i in os.listdir(path): if os.path.isdir(path + '\\'+ i): print("Get down:",path + '\\'+ i ) obhod(path + '\\'+ i,name, level+1 ) print("Return:", path ) if name in os.listdir(path): find_name = path print(find_name) obhod(path,name) print("The file you are looking for is in", find_name)
@Herifs
@Herifs 4 жыл бұрын
1:37 вы нет, а я пин понг на андроид делаю🌚😉
@ineednew9437
@ineednew9437 4 жыл бұрын
на pygame?
@dmitryts9093
@dmitryts9093 4 жыл бұрын
import os path = "..." #Имя директории def obxodFile(path, name): #функция обхода папок print("Inside folder:", os.listdir(path)) #Вывод содержимого папки for i in os.listdir(path): #Обход содержимого папки if os.path.isdir(path+"\\"+i): #Вход в папку директории print("Спускаемся", path+"\\"+i) for j in os.listdir(path+"\\"+i): #Обход содержимого if j == name: print("Поздравляю, вы нашли:", name) obxodFile(path+"\\"+i, "...") print("Возвращаемся", path) obxodFile(path, "...") Сделал поиск вот так, не сильно заморачивался) То есть если функция внутри функции, то заходить в папки, в которые уже заходили не будет ? для этого рекурсия нужна?
@TordMattias
@TordMattias 3 жыл бұрын
Спасибо!
@ДмитрийВасильев-ж1е4ь
@ДмитрийВасильев-ж1е4ь 5 жыл бұрын
всё здорово, но неправильное ударение на "Интерстеллар" режет слух. Не уверен в произношении - погугли или используй то, в чём уверен :(
@hateUglys
@hateUglys 4 жыл бұрын
такой вариант поиска файла def search(path,name,level=1): print("Level=", level, "Content: ", os.listdir(path)) for i in os.listdir(path): if os.path.isfile(path+"\\"+i) and i==name: print('--------------') print("Файл", name, "найден по адресу", path+"\\"+i) print('--------------') elif os.path.isdir(path+"\\"+i): print("Down to ->",path+"\\"+i) search(path+"\\"+i,name,level+1) print("< - Up to",path) path='путь' name="имя" search(path,name)
@dieselekin
@dieselekin 3 жыл бұрын
вот уважаемый ведущий - у меня бомбит у от вашей манеры - вы назвали переменную(path) именем метода(os.path) - это нормально? или не очень т.к. я на основе вашего кода начал переделывать свою прогу - это меня вывело из колеи спасибо за внимание
@alex_pure
@alex_pure 2 жыл бұрын
Спасибо, что обратили на это внимание - теперь буду знать.
44 Функция enumerate Python
5:33
egoroff_channel
Рет қаралды 49 М.
Long Nails 💅🏻 #shorts
00:50
Mr DegrEE
Рет қаралды 18 МЛН
Мама у нас строгая
00:20
VAVAN
Рет қаралды 11 МЛН
Рекурсия в Python
52:13
Python Russian
Рет қаралды 5 М.
Основы Python #13: Работа с файлами, with
16:42
Oleg Molchanov
Рет қаралды 38 М.
Замыкания в Python. Closure Python
10:02
egoroff_channel
Рет қаралды 78 М.
Python для начинающих. Урок 22 | Работа с файлами
24:15
Иван Викторович
Рет қаралды 4,4 М.
Вложенные функции Python
8:55
egoroff_channel
Рет қаралды 45 М.
__new__ или __init__ в Python? Знаете ли вы это..
12:37
Объектно ориентированное программирование в Python за 10 минут!
12:56
Хауди Хо™ - Просто о мире IT!
Рет қаралды 677 М.