Помогите пожалуйста.Не выходит решить задачу 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()
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)
Больше по теме