本文目录导读:

我来帮你实现一个简易的日记本脚本,这里提供几个不同版本的实现方案:
纯命令行Python版(最基础)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""简易日记本 - 命令行版本"""
import os
import json
from datetime import datetime
class Diary:
def __init__(self, filename="diary.json"):
self.filename = filename
self.entries = self.load_entries()
def load_entries(self):
"""加载日记数据"""
if os.path.exists(self.filename):
try:
with open(self.filename, 'r', encoding='utf-8') as f:
return json.load(f)
except:
return {}
return {}
def save_entries(self):
"""保存日记数据"""
with open(self.filename, 'w', encoding='utf-8') as f:
json.dump(self.entries, f, ensure_ascii=False, indent=2)
def write_entry(self):
"""写日记"""
today = datetime.now().strftime("%Y-%m-%d")
print(f"\n📝 今天的日期:{today}")
if today in self.entries:
print("⚠️ 今天已经有日记,写入将覆盖旧内容!")
print("当前内容:")
print("-" * 40)
print(self.entries[today])
print("-" * 40)
print("请输入今天的日记(输入 @结束 完成写作):")
lines = []
while True:
line = input()
if line == "@结束":
break
lines.append(line)
content = "\n".join(lines)
if content.strip():
self.entries[today] = content
self.save_entries()
print("✅ 日记保存成功!")
else:
print("❌ 日记内容为空,未保存")
def view_entry(self):
"""查看指定日期的日记"""
print("\n📅 请输入要查看的日期(格式:2024-01-01)")
print("输入 '#39; 查看最近一篇,直接回车查看今天的:")
date = input("> ").strip()
if not date:
date = datetime.now().strftime("%Y-%m-%d")
elif date == "quot;:
if self.entries:
date = max(self.entries.keys())
else:
print("📭 还没有任何日记")
return
if date in self.entries:
print(f"\n📖 {date} 的日记:")
print("=" * 50)
print(self.entries[date])
print("=" * 50)
else:
print(f"❌ 没有找到 {date} 的日记")
def view_all(self):
"""查看所有日记"""
if not self.entries:
print("📭 还没有任何日记")
return
print("\n📚 所有日记:")
print("-" * 50)
for date in sorted(self.entries.keys(), reverse=True):
preview = self.entries[date][:50] + "..." if len(self.entries[date]) > 50 else self.entries[date]
print(f"📅 {date}: {preview}")
print("-" * 50)
def delete_entry(self):
"""删除指定日期的日记"""
print("\n🗑️ 请输入要删除的日期:")
date = input("> ").strip()
if date in self.entries:
print(f"\n确认删除 {date} 的日记?(y/n)")
if input().lower() == 'y':
del self.entries[date]
self.save_entries()
print("✅ 日记已删除")
else:
print(f"❌ 没有找到 {date} 的日记")
def search(self):
"""搜索日记内容"""
keyword = input("🔍 请输入搜索关键词:").strip()
if not keyword:
return
found = False
for date, content in self.entries.items():
if keyword in content:
print(f"\n📅 {date} 中找到:")
lines = content.split('\n')
for line in lines:
if keyword in line:
print(f" → {line}")
found = True
if not found:
print("🔍 没有找到匹配的内容")
def show_menu(self):
"""显示主菜单"""
print("\n" + "=" * 40)
print("📔 简易日记本")
print("=" * 40)
print("1. ✍️ 写今天的日记")
print("2. 📖 查看日记")
print("3. 📚 查看所有日记")
print("4. 🔍 搜索日记")
print("5. 🗑️ 删除日记")
print("6. ❌ 退出")
print("=" * 40)
def run(self):
"""运行主程序"""
while True:
self.show_menu()
choice = input("请选择操作 (1-6): ").strip()
if choice == "1":
self.write_entry()
elif choice == "2":
self.view_entry()
elif choice == "3":
self.view_all()
elif choice == "4":
self.search()
elif choice == "5":
self.delete_entry()
elif choice == "6":
print("\n👋 再见!")
break
else:
print("❌ 无效选择,请输入 1-6")
if __name__ == "__main__":
diary = Diary()
diary.run()
带GUI界面的版本(使用tkinter)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""简易日记本 - GUI版本"""
import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
from datetime import datetime
import json
import os
class DiaryGUI:
def __init__(self, root):
self.root = root
self.root.title("📔 简易日记本")
self.root.geometry("800x600")
self.filename = "diary_gui.json"
self.entries = self.load_entries()
self.setup_ui()
self.refresh_entry_list()
def load_entries(self):
"""加载日记"""
if os.path.exists(self.filename):
try:
with open(self.filename, 'r', encoding='utf-8') as f:
return json.load(f)
except:
return {}
return {}
def save_entries(self):
"""保存日记"""
with open(self.filename, 'w', encoding='utf-8') as f:
json.dump(self.entries, f, ensure_ascii=False, indent=2)
def setup_ui(self):
"""设置界面"""
# 顶部菜单栏
menubar = tk.Menu(self.root)
self.root.config(menu=menubar)
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="保存", command=self.save_current)
file_menu.add_command(label="新建", command=self.new_entry)
file_menu.add_separator()
file_menu.add_command(label="退出", command=self.root.quit)
menubar.add_cascade(label="文件", menu=file_menu)
# 主界面布局
main_frame = ttk.Frame(self.root, padding="10")
main_frame.pack(fill=tk.BOTH, expand=True)
# 左侧日期列表
left_frame = ttk.Frame(main_frame)
left_frame.pack(side=tk.LEFT, fill=tk.Y, padx=(0, 10))
ttk.Label(left_frame, text="📅 日记列表").pack(pady=(0, 5))
self.entry_list = tk.Listbox(left_frame, width=20, height=20)
self.entry_list.pack(side=tk.LEFT, fill=tk.Y)
scrollbar = ttk.Scrollbar(left_frame, orient="vertical", command=self.entry_list.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
self.entry_list.config(yscrollcommand=scrollbar.set)
self.entry_list.bind('<<ListboxSelect>>', self.on_select)
# 右侧编辑区
right_frame = ttk.Frame(main_frame)
right_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
# 日期显示
self.date_label = ttk.Label(right_frame, text=f"📅 {datetime.now().strftime('%Y-%m-%d')}")
self.date_label.pack(pady=(0, 5))
# 文本编辑区
self.text_editor = scrolledtext.ScrolledText(right_frame, wrap=tk.WORD, height=25)
self.text_editor.pack(fill=tk.BOTH, expand=True)
# 按钮区域
button_frame = ttk.Frame(right_frame)
button_frame.pack(pady=10)
ttk.Button(button_frame, text="💾 保存", command=self.save_current).pack(side=tk.LEFT, padx=5)
ttk.Button(button_frame, text="✨ 更新日期", command=self.update_date).pack(side=tk.LEFT, padx=5)
ttk.Button(button_frame, text="🗑️ 删除", command=self.delete_current).pack(side=tk.LEFT, padx=5)
def refresh_entry_list(self):
"""刷新日记列表"""
self.entry_list.delete(0, tk.END)
for date in sorted(self.entries.keys(), reverse=True):
self.entry_list.insert(tk.END, date)
def on_select(self, event):
"""选择日记时显示内容"""
if self.entry_list.curselection():
date = self.entry_list.get(self.entry_list.curselection()[0])
self.text_editor.delete(1.0, tk.END)
self.text_editor.insert(1.0, self.entries[date])
self.date_label.config(text=f"📅 {date}")
def save_current(self):
"""保存当前日记"""
content = self.text_editor.get(1.0, tk.END).strip()
if not content:
messagebox.showwarning("警告", "日记内容不能为空!")
return
date = datetime.now().strftime("%Y-%m-%d")
self.entries[date] = content
self.save_entries()
self.refresh_entry_list()
messagebox.showinfo("成功", "日记保存成功!")
def new_entry(self):
"""新建日记"""
self.text_editor.delete(1.0, tk.END)
self.date_label.config(text=f"📅 {datetime.now().strftime('%Y-%m-%d')}")
def update_date(self):
"""更新日期"""
# 简化处理,直接使用当前日期
self.entry_list.selection_clear(0, tk.END)
self.text_editor.delete(1.0, tk.END)
self.date_label.config(text=f"📅 {datetime.now().strftime('%Y-%m-%d')}")
def delete_current(self):
"""删除当前日记"""
current_date = self.date_label.cget("text").replace("📅 ", "")
if current_date in self.entries:
if messagebox.askyesno("确认", f"确定要删除 {current_date} 的日记吗?"):
del self.entries[current_date]
self.save_entries()
self.text_editor.delete(1.0, tk.END)
self.refresh_entry_list()
messagebox.showinfo("成功", "日记已删除!")
else:
messagebox.showwarning("警告", "当前没有可删除的日记!")
if __name__ == "__main__":
root = tk.Tk()
app = DiaryGUI(root)
root.mainloop()
简单的markdown格式日记
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""MD格式日记本 - 一键生成日期文件"""
import os
from datetime import datetime
class MDBasedDiary:
def __init__(self, diary_dir="diary"):
self.diary_dir = diary_dir
if not os.path.exists(diary_dir):
os.makedirs(diary_dir)
def create_today(self):
"""创建今天的日记文件"""
today = datetime.now().strftime("%Y-%m-%d")
filename = os.path.join(self.diary_dir, f"{today}.md")
if os.path.exists(filename):
print(f"⚠️ {filename} 已存在!")
return
template = f"""# {today} 的日记
## 天气
- 天气:
## 心情
- 心情:
## 今日大事记
-
## 计划完成情况
-
## 感悟与反思
-
## 明日计划
-
"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(template)
print(f"✅ 已创建日志:{filename}")
print(f"📂 存放于:{os.path.abspath(filename)}")
def list_diary(self):
"""列出所有日记"""
files = sorted(os.listdir(self.diary_dir), reverse=True)
if not files:
print("📭 暂无日记")
return
print("📚 所有日记:")
for f in files:
size = os.path.getsize(os.path.join(self.diary_dir, f))
print(f" 📄 {f} ({size} bytes)")
if __name__ == "__main__":
diary = MDBasedDiary()
while True:
print("\n" + "=" * 40)
print("MD日记本 - 简单版")
print("1. ✍️ 创建今天的日记")
print("2. 📚 查看所有日记")
print("3. ❌ 退出")
print("=" * 40)
choice = input("请选择: ").strip()
if choice == "1":
diary.create_today()
elif choice == "2":
diary.list_diary()
elif choice == "3":
break
else:
print("❌ 无效输入")
使用方法
- 命令行版本:保存为
diary.py,运行python diary.py - GUI版本:保存为
diary_gui.py,运行python diary_gui.py(需要tkinter) - MD版本:保存为
md_diary.py,运行python md_diary.py
功能特点
✅ 支持写、读、删、搜日记
✅ 自动按日期保存
✅ 数据持久化存储
✅ 简单易用的界面
你可以根据需要选择最适合你的版本,或在此基础上继续添加功能(如标签、分类、统计分析等),需要调整哪个版本或有其他需求,随时告诉我!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播