В этих задачах вам будет поставлена какая-то проблема, которую необходимо решить. Вам необходимо сдать на проверку программу, решающую данную задачу, а в конце кода программы в виде многострочного комментария написан ответ на эту задачу. Многострочные комментарии в Python отделяются строками, содержащими три двойные кавычки перед и после комментария. Пример такой программы:
print(2 ** 100) """ 1267650600228229401496703205376 """
В первых задачах этого листка используется архив со структурой каталогов с таксономией приматов (виды, семейства и т.д.).
Каталог Primates
Primates
. Например, ваша программа может содержать вызов os.chdir("Primates")
C:\Users\Ivan\179\progr\Primates
C:\Users\Ivan\179\progr
При этом запрещается использовать абсолютные пути в именах каталогов, ваша програма
может быть запущена из любого каталога, в котором есть подкаталог Preimates
.
В тексте программы рекомендуется использовать прямой слеш (“/
”)
для разделения каталогов. В выводе вашей программы могут быть как прямые, так и обратные слеши.
Перейдите в каталог Primates/Haplorrhini/Simiiformes/Platyrrhini/Callitrichinae
.
Выведите список всех файлов в этом каталоге, упорядоченных в лексикографическом порядке.
Имена вложенных подкаталогов выводить не нужно.
Для того, чтобы отличить строку с именем файла от строки с именем подкаталога
можно использовать функции
или
.
import os os.chdir("Primates") # ... # ... """ Galeopithecidae.txt """
Начнём с каталога Primates
Haplorrhini
Strepsirrhini
Simiiformes
Primates/Haplorrhini/Simiiformes/
Например, если бы наша программа начала с каталога Primates/Strepsirrhini/Lorisiformes
Lorisiformes/Galagidae/Euoticus/Euoticus_elegantulus.txt
Указание. Напишите рекурсивную функцию, которая строит список подкаталогов данного каталога, находит из них наименьший и рекурсивно вызывается из него.
Найдите файл с именем Homo_sapiens.txt
Например, если бы требовалось найти файл Paleopropithecidae.txt
ott5827927
Указание. Напишите функцию, которая рекурсивно будет запускаться от всех своих подкаталогов.
Если вы пишете рекурсивную фукнцию, то после рекурсивного вызова нужно
возвращаться в родительский каталог при помощи os.chdir("..")
Другой вариант решения задачи: воспользоваться
функцией
. Тогда ваше решение будет короче.
Найдите файл с именем Homo_sapiens.txt
Primates
Primates/ ... /Homo_sapiens.txt
Например, если бы требовалось найти файл Paleopropithecidae.txt
Primates/Strepsirrhini/Lemuriformes/Paleopropithecidae.txt
Постройте список всех файлов, находящихся в каталоге Primates
Например, если исходным каталогом был бы Primates/Haplorrhini/Simiiformes/Platyrrhini/Pitheciidae/Pitheciinae/Cacajao
Cacajao_ayresi.txt Cacajao_calvus_calvus.txt Cacajao_calvus_novaesi.txt Cacajao_calvus_rubicundus.txt Cacajao_calvus_ucayalli.txt Cacajao_hosomi.txt Cacajao_melanocephalus.txt Cacajao_rubicundus.txt
Выведите список всех вложенных подкаталогов для каталога Primates
Primates
Например, если бы максимальная глубина вложенности каталогов была бы равна 2 (не считая каталога Primates
Primates Primates/Haplorrhini Primates/Haplorrhini/Simiiformes Primates/Haplorrhini/Tarsiiformes Primates/Strepsirrhini Primates/Strepsirrhini/Chiromyiformes Primates/Strepsirrhini/Lemuriformes Primates/Strepsirrhini/Lorisiformes
Найдите каталог, в котором находится наибольшее число файлов (без учёта файлов во вложенных подкаталогах). Такой каталог будет один. Выведите полный путь до этого каталога.
Например, если в качестве начального каталога взять Primates/Haplorrhini/Simiiformes/Platyrrhini/Atelidae
Atelidae/Alouattinae/Alouatta
В каждом файле архива находится текстовая строка: идентификатор этого таксона в open tree of life. Выведите список этих таксонов, упорядочив их в лексикографическом порядке.
Например, если бы стартовым был каталог Primates/Strepsirrhini/Lorisiformes/Lorisidae
ott101793 ott1049685 ott1049687 ott323051 ott323063 ott339042 ott4941439 ott673365 ott673376 ott946857 ott946859 ott946861