Skip to content

ozaryx/library_dir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

library_dir

Решение задания №4

Задание. Создание модуля

Есть папка с текстовыми файлами — «библиотека» (в смысле, книжная библиотека). Разработаем набор базовых функций для работы с этой библиотекой и оформим этот набор в виде модуля.

Данные для работы
Библиотека представляет собой папку с текстовыми файлами. Эти текстовые файлы представлены в особом формате. Расширение имени файла с книгой — .txt. Например, pushkin_skazka_o_tsare.txt. Любые другие файлы игнорируются. Все книги библиотеки лежат в одной папке. Имя папки заранее неизвестно.

Каждая книга — текстовый файл в кодировке UTF-8. Первая строка файла — имя автора. Вторая строка — название книги. Третья строка — аннотация. Начиная с четвёртой строки и до конца файла идёт текст книги.

Кроме того, в каталоге может лежать специальный файл с именем description.txt. Этот файл не является книгой и содержит описание библиотеки. Это так же текстовый файл в кодировке UTF-8. Соответственно, этот файл нужно игнорировать и обращаться к нему только если запрошено описание библиотеки.

Скачайте пример папки с библиотекой в виде архива.

Интерфейс модуля
Работа с библиотекой должна производиться следующими функциями.

Во всех функциях модуля первый параметр library_dir – это имя папки с библиотекой.

read_library_description
Формат функции:

read_library_description(library_dir)
Функция находит в папке с библиотекой файл description.txt и возвращает содержание этого файла. Если файла нет или его невозможно прочитать, возвращает пустую строку.

Необходимо (!) предусмотреть обработку ошибок чтения файла.

get_book_files
Формат функции:

get_book_files(library_dir)
Функция возвращает список имён файлов книг в указанной папке. Имена должны быть относительными, не абсолютными. Файл description.txt нужно проигнорировать, то есть даже если он присутствует, в возвращённом списке его быть не должно. Например, если в папке лежали файлы:

ali-baba-i-40.txt description.txt skazki.txt vinni-pooh.doc zimovie.doc Функция должна вернуть следующий результат:

[ "ali-baba-i-40.txt", "skazki.txt" ] read_book_info
Формат функции:

read_book_info(library_dir, book_file)
Параметры:

library_dir – папка библиотеки book_file – имя файла с книгой Функция возвращает кортеж из трёх значений: (автор, название, аннотация). Напомню, что каждый текстовый файл с книгой содержит имя автора в первой строке, название во второй и аннотацию в третьей строке.

Например, если файл Arap_Petra_Velikogo.txt начинается так:

Александр Сергеевич Пушкин
Арап Петра Dеликого
Аннотация: Александр Пушкин. Арап Петра Великого

Железной волею Петра Преображенная Россия. Н. Языков.

ГЛАВА I

Я в Париже; Я начал жить, а не дышать. То функция read_book_info(library_dir, "Arap_Petra_Velikogo.txt") должна вернуть такой результат:

( "Александр Сергеевич Пушкин", "Арап Петра Dеликого", "Аннотация: Александр Пушкин. Арап Петра Великого" ) Необходимо (!) предусмотреть обработку ошибок чтения файла.

get_authors
Формат функции:

get_authors(library_dir)
Функция возвращает список имён авторов, книги которых есть в библиотеке. Имена в списке не должны повторяться, конечно. Для этого придётся пройти по списку файлов книг и прочитать имя автора из каждой книги. Например, для имеющегося в наличии примера результат должен быть такой:

["Александр Сергеевич Пушкин", "Николай Васильевич Гоголь"] get_all_books_info
Формат функции:

get_all_books_info(library_dir)
Эта функция возвращает список книг в данной папке, причём каждая книга представлена в виде кортежа (автор, название, аннотация, имя файла). То есть она объединяет работу функций get_book_files и read_book_info.

Оформление
Все функции следует поместить в модуль library_dir.py. К каждой функции желательно написать документацию.
Так же есть смысл написать тестовую программу, которая загружает этот модуль и проверяет работу каждой функции модуля.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages