Top.Mail.Ru
Ответы

Помогите пожалуйста.Не выходит решить задачу Python

Помогите пожалуйста.
Нужно реализовать функцию gen_files_path, которая рекурсивно проходит по всем каталогам указанной директории (по умолчанию — корневой диск), находит указанный пользователем каталог и генерирует пути всех встреченных файлов.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

import os

folder = os.path.abspath(os.path.join('..'))

gen_files_path = [links + '\\' + file
for links, dirs, files in list(os.walk(folder))
for file in files
]

for file in gen_files_path:
print(file)

Аватар пользователя
Знаток
1234567891011121314151617181920212223242526272829303132333435
 import os 
from _collections_abc import Iterator 
 
 
 
def gen_files_path(user_file: str, path=None) -> Iterator: 
    if path is None: 
        path = os.path.abspath(os.path.sep) 
    print(f'Директория поиска: {path}\n') 
    for root, dirs, files in os.walk(path): 
        print('\nПоиск идет в папках директории') 
        for i_dir in dirs: 
            yield os.path.join(root, i_dir) 
        print('\nПоиск идет в файлах директории') 
        for i_file in files: 
            yield os.path.join(root, i_file) 
        try: 
            if user_file in dirs: 
                return print(f'\nПапка {user_file} находится в директории') 
            elif user_file in files: 
                return print(f'\nФайл {user_file} находится в директории') 
            raise FileNotFoundError(f'\nВ данной директории нет файла {user_file}') 
        except FileNotFoundError as exc: 
            return print(exc) 
 
 
def main(): 
    name_file = 'get-pip.py' 
 
    for name in gen_files_path(name_file): 
        print(name) 
 
 
main() 
 
Аватар пользователя
Ученик
11мес
123456789101112131415161718192021222324252627
 import os 
from collections.abc import Iterable 
 
 
def gen_files_path(path: str) -> Iterable[str]: 
    """ 
    Функция - генератор. Рекурсивно проходит по всем каталогам, 
    указанной директории, находит заданный каталог и генерирует 
    пути файлов. 
    @param path: 
    @return: 
    """ 
 
    for root, dirs, files in os.walk(path): 
        for file in files: 
            yield os.path.join(root, file) 
 
 
root_variant_index_0 = os.path.abspath(os.sep) 
current_variant_index_1 = os.path.join(os.getcwd()) 
need_variant_index_2 = os.path.join('..', '..', '..', 'Python_Basic') 
need_variant_index_3 = os.path.join('..', '..', '..', 'Python_Basic', 'Module26') 
your_variant = (root_variant_index_0, current_variant_index_1, need_variant_index_2, need_variant_index_3) 
 
result = gen_files_path(path=your_variant[int(input('Введите индекс варианта '))]) 
for name in result: 
    print(name)