h5py库完全指南:从零开始构建你的第一个HDF5数据仓库

核心内容摘要

nlp_structbert_sentence-similarity_chinese-large快速上手:Jupyter Notebook交互式语义分析演示
新手避坑指南:Makefile变量传递那些容易踩的5个坑(附解决方案)

GLM-4-9B-Chat-1M快速上手:OpenWebUI界面功能详解——会话管理、模板调用、历史回溯

实际应用场景与痛点场景很多人在学习或自我提升时会购买或借阅大量书籍但往往因为缺乏系统管理导致- 不知道自己读到了哪里- 无法预估完成时间- 容易中断阅读计划- 没有提醒机制容易忘记坚持痛点

进度不透明没有直观的进度条或剩余页数统计。

时间不可控无法根据每日阅读量预测完成时间。

缺乏提醒容易因忙碌而中断阅读。

数据分散阅读记录可能记在纸上或不同 App 中难以统一分析。

核心逻辑讲解

书籍信息录入- 书名、总页数、每日目标页数可选

每日阅读记录- 输入当天阅读的页数更新已读页数

剩余页数 预计完成时间- 剩余页数 总页数 - 已读页数- 预计天数 剩余页数 / 每日目标页数

阅读提醒- 每天固定时间检查是否完成当日目标

数据持久化- 使用 JSON 文件存储书籍列表和阅读记录

交互方式- 命令行界面CLI实现增删改查

项目结构book_reading_tracker/├── main.py # 主程序入口├── book_manager.py # 书籍管理核心逻辑├── reminder.py # 阅读提醒模块├── data/ # 数据存储目录│ └── books.json # 书籍数据├── README.md # 项目说明└── USAGE.md # 使用说明

核心代码book_manager.pyimport jsonimport osfrom datetime import datetimeDATA_FILE data/books.jsonclass BookManager:def __init__(self):os.makedirs(data, exist_okTrue)self.books self.load_books()def load_books(self):if os.path.exists(DATA_FILE):with open(DATA_FILE, r, encodingutf-

as f:return json.load(f)return []def save_books(self):with open(DATA_FILE, w, encodingutf-

as f:json.dump(self.books, f, ensure_asciiFalse, indent

def add_book(self, title, total_pages, daily_goal

:book {title: title,total_pages: total_pages,read_pages: 0,daily_goal: daily_goal,history: [] # {date: YYYY-MM-DD, pages: X}}self.books.append(book)self.save_books()def record_reading(self, index, pages):if 0 index len(self.books):book self.books[index]book[read_pages] pagestoday datetime.now().strftime(%Y-%m-%d)book[history].append({date: today, pages: pages})self.save_books()return Truereturn Falsedef get_progress(self, index):if 0 index len(self.books):book self.books[index]remaining book[total_pages] - book[read_pages]days_left remaining / book[daily_goal] if book[daily_goal] 0 else float(inf)return {title: book[title],read: book[read_pages],total: book[total_pages],remaining: remaining,days_left: round(days_left,

}return Nonedef list_books(self):return [b[title] for b in self.books]reminder.pyimport scheduleimport timefrom book_manager import BookManagerdef check_reminder():bm BookManager()for i, book in enumerate(bm.books):progress bm.get_progress(i)if progress and progress[remaining] 0:print(f 提醒: 《{progress[title]}》还剩 {progress[remaining]} 页预计 {progress[days_left]} 天完成。

)def start_reminder(hour20, minute

:schedule.every().day.at(f{hour:02d}:{minute:02d}).do(check_reminder)print(⏰ 阅读提醒已启动...)while True:schedule.run_pending()time.sleep(

main.pyfrom book_manager import BookManagerfrom reminder import start_reminderimport threadingdef menu():bm BookManager()while True:print(\n 书籍阅读进度管理器 )print(

添加书籍)print(

记录今日阅读)print(

查看进度)print(

列出所有书籍)print(

启动阅读提醒)print(

退出)choice input(请选择操作: ).strip()if choice 1:title input(书名: )total int(input(总页数: ))goal int(input(每日目标页数 (默认

: ) or

bm.add_book(title, total, goal)print(✅ 添加成功)elif choice 2:titles bm.list_books()for idx, t in enumerate(titles):print(f{idx}. {t})idx int(input(选择书籍编号: ))pages int(input(今日阅读页数: ))if bm.record_reading(idx, pages):print(✅ 记录成功)else:print(❌ 编号错误)elif choice 3:titles bm.list_books()for idx, t in enumerate(titles):print(f{idx}. {t})idx int(input(选择书籍编号: ))prog bm.get_progress(idx)if prog:print(f\n《{prog[title]}》)print(f已读: {prog[read]}/{prog[total]})print(f剩余: {prog[remaining]} 页)print(f预计还需: {prog[days_left]} 天)else:print(❌ 编号错误)elif choice 4:titles bm.list_books()for t in titles:print(f- {t})elif choice 5:hour int(input(提醒小时 (

, 默认

: ) or

minute int(input(提醒分钟 (

, 默认

: ) or

t threading.Thread(targetstart_reminder, args(hour, minute), daemonTrue)t.start()print(⏰ 提醒线程已启动主程序可继续操作。

)elif choice 0:breakelse:print(无效选择)if __name__ __main__:menu()

README.md# 书籍阅读进度管理器一个用 Python 编写的 CLI 工具帮助你记录阅读进度、预测完成时间并通过提醒养成阅读习惯。

## 功能- 添加书籍书名、总页数、每日目标- 记录每日阅读页数- 自动计算剩余页数和预计完成时间- 阅读提醒定时检查- 数据持久化JSON## 安装bashgit clone https://github.com/yourname/book_reading_tracker.git (https://github.com/yourname/book_reading_tracker.git)cd book_reading_trackerpip install schedule## 运行bashpython main.py

USAGE.md# 使用说明

首次运行选择 1 添加书籍。

每天阅读后选择 2 记录页数。

选择 3 查看进度。

选择 5 设置每日提醒时间。

数据保存在 data/books.json可手动备份。

核心知识点卡片知识点 说明JSON 数据持久化 使用json.dump 和json.load 实现简单数据存储模块化设计 将功能拆分为book_manager 和reminder 模块命令行交互 通过input 和print 实现 CLI定时任务 使用schedule 库实现每日提醒多线程 用threading 让提醒在后台运行进度计算 剩余页数 / 每日目标 预计天数

8.

总结这个程序解决了阅读进度不透明、时间不可控、缺乏提醒三大痛点通过简单的 CLI 和 JSON 存储让用户轻松管理多本书的阅读计划。

它适合作为个人效率工具也可以扩展为 Web 或移动端应用。

核心思想是数据驱动 自动化提醒帮助用户养成持续阅读的习惯。

如果你需要还可以把这个项目打包成可执行文件.exe或者做成带图形界面的版本Tkinter/PyQt。

利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

糖心-糖心应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123