增补博客 第十四篇 python大作业小说阅读器(3)显示文字函数
import os import re def sort_chapters(files): """根据文件名中提取的章节编号对文件进行排序。""" # 此正则表达式假设章节编号是数字,并尝试提取以进行排序 chapter_pattern = re.compile(r'\d+') def extract_number(file): match = chapter_pattern.search(file) if match: return int(match.group()) return 0 # 如果未找到数字,则默认为0 return sorted(files, key=extract_number) def find_novel(book_name): # 构建存储所有小说的基础目录路径 base_directory = "..\\小说" # 列出基础目录中的所有目录 all_directories = os.listdir(base_directory) # 搜索与书名匹配的目录 matching_directories = [directory for directory in all_directories if book_name in directory] if not matching_directories: print("未找到给定书名的目录。") return book = {} # 创建一个空字典用于存储章节名和内容 # 遍历匹配的目录 for directory in matching_directories: novel_path = os.path.join(base_directory, directory) print(f"目录:{novel_path}") # 列出目录中的所有文件并对其进行排序 files = os.listdir(novel_path) sorted_files = sort_chapters(files) # 遍历排序后的txt文件并将其内容存储在字典中 for file in sorted_files: if file.endswith('.txt'): with open(os.path.join(novel_path, file), 'r', encoding='utf-8') as f: content = f.read() # 提取章节名,假设文件名就是章节名 chapter_name = os.path.splitext(file)[0] book[chapter_name] = content return book