乐于分享
好东西不私藏

用 Python 做一个简单实用的文本编辑器!

用 Python 做一个简单实用的文本编辑器!

大家好!欢迎来到奥饼饼智慧谷 📝。今天我们来做一个非常实用的工具——简易文本编辑器!可以用来写日记、笔记、甚至代码!

🎯 功能介绍

这个文本编辑器会有这些功能:

  • 创建新文件
  • 打开现有文件
  • 编辑和保存文件
  • 查看文件列表
  • 删除不需要的文件

💡 使用小贴士

记得经常保存,避免数据丢失!

📝 开始写代码

以下是完整的简易文本编辑器代码:

import os from datetime import datetime NOTES_DIR = “notes” def ensure_dir(): “””确保笔记目录存在””” if not os.path.exists(NOTES_DIR): os.makedirs(NOTES_DIR) def get_file_path(filename): “””获取完整文件路径””” return os.path.join(NOTES_DIR, filename) def list_files(): “””列出所有笔记文件””” ensure_dir() files = [f for f in os.listdir(NOTES_DIR) if os.path.isfile(get_file_path(f))] if not files: print(“\n📭 还没有笔记文件”) return [] # 按修改时间排序 files.sort(key=lambda f: os.path.getmtime(get_file_path(f)), reverse=True) print(“\n” + “=”*60) print(f” 📁 笔记文件 (共 {len(files)} 个)”) print(“=”*60) print(f”{‘序号’:<8} {‘文件名’:<30} {‘大小’:<10} {‘修改时间’:<20}”) print(“-“*60) for i, filename in enumerate(files, 1): filepath = get_file_path(filename) size = os.path.getsize(filepath) mtime = datetime.fromtimestamp(os.path.getmtime(filepath)) mtime_str = mtime.strftime(“%Y-%m-%d %H:%M”) size_str = f”{size} bytes” print(f”{i:<8} {filename:<30} {size_str:<10} {mtime_str:<20}”) print(“=”*60) return files def create_note(): “””创建新笔记””” ensure_dir() print(“\n” + “=”*40) print(” ➕ 创建新笔记”) print(“=”*40) while True: filename = input(“\n请输入文件名 (例如: diary.txt): “).strip() if filename: break print(“❌ 文件名不能为空!”) filepath = get_file_path(filename) if os.path.exists(filepath): print(“\n⚠️ 这个文件已经存在了!”) choice = input(“要覆盖它吗? (y/n): “).strip().lower() if choice != ‘y’: return print(“\n📝 开始输入内容,输入 END 结束:”) print(“-“*40) lines = [] while True: line = input() if line.strip() == ‘END’: break lines.append(line) content = ‘\n’.join(lines) with open(filepath, ‘w’, encoding=’utf-8′) as f: f.write(content) print(f”\n✅ 笔记已保存: {filename}”) print(f”📝 共 {len(lines)} 行”) def view_note(): “””查看笔记””” ensure_dir() files = list_files() if not files: return while True: try: choice = input(“\n请输入要查看的文件序号: “).strip() index = int(choice) – 1 if 0 <= index < len(files): filename = files[index] break print(“❌ 请输入有效的序号!”) except ValueError: print(“❌ 请输入有效的数字!”) filepath = get_file_path(filename) print(“\n” + “=”*60) print(f” 📖 {filename}”) print(“=”*60) with open(filepath, ‘r’, encoding=’utf-8′) as f: content = f.read() print(content) print(“=”*60) def edit_note(): “””编辑笔记””” ensure_dir() files = list_files() if not files: return while True: try: choice = input(“\n请输入要编辑的文件序号: “).strip() index = int(choice) – 1 if 0 <= index < len(files): filename = files[index] break print(“❌ 请输入有效的序号!”) except ValueError: print(“❌ 请输入有效的数字!”) filepath = get_file_path(filename) # 先显示现有内容 print(“\n” + “=”*60) print(f” 📖 当前内容: {filename}”) print(“=”*60) with open(filepath, ‘r’, encoding=’utf-8′) as f: content = f.read() print(content) print(“\n” + “=”*60) print(“\n📝 输入新内容 (完全替换原有内容),输入 END 结束:”) print(“-“*40) lines = [] while True: line = input() if line.strip() == ‘END’: break lines.append(line) new_content = ‘\n’.join(lines) with open(filepath, ‘w’, encoding=’utf-8′) as f: f.write(new_content) print(f”\n✅ 笔记已更新: {filename}”) def delete_note(): “””删除笔记””” ensure_dir() files = list_files() if not files: return while True: try: choice = input(“\n请输入要删除的文件序号: “).strip() index = int(choice) – 1 if 0 <= index < len(files): filename = files[index] break print(“❌ 请输入有效的序号!”) except ValueError: print(“❌ 请输入有效的数字!”) confirm = input(f”\n⚠️ 确定要删除 {filename} 吗? (y/n): “).strip().lower() if confirm == ‘y’: filepath = get_file_path(filename) os.remove(filepath) print(f”\n✅ 已删除: {filename}”) else: print(“\n🚫 取消删除”) def main(): ensure_dir() print(“=”*40) print(” 📝 欢迎使用简易文本编辑器! 📝”) print(“=”*40) while True: print(“\n” + “-“*40) print(“1. 查看所有笔记”) print(“2. 创建新笔记”) print(“3. 查看笔记”) print(“4. 编辑笔记”) print(“5. 删除笔记”) print(“6. 退出”) print(“-“*40) choice = input(“\n请选择 (1-6): “).strip() if choice == “1”: list_files() elif choice == “2”: create_note() elif choice == “3”: view_note() elif choice == “4”: edit_note() elif choice == “5”: delete_note() elif choice == “6”: print(“\n👋 再见! 继续创作吧!”) break else: print(“❌ 请选择 1-6!”) if __name__ == “__main__”: main()

好记性不如烂笔头!用文字记录你的想法和生活,让每一刻都值得珍藏!

🚀 运行试试吧!

保存为 `editor.py` 然后运行:

python editor.py

开始用自己的编辑器记录想法吧!写日记、做笔记、甚至写代码都可以!

✨ 进阶玩法

想让这个编辑器更强大?试试这些改进:

  1. 添加搜索功能,在文件中查找关键词
  2. 添加简单的格式化功能(加粗、斜体等)
  3. 支持Markdown格式的预览
  4. 添加文件分类和标签功能

🎁 创作建议

每天写一点,不仅能锻炼文笔,还能记录生活的美好!

📚 知识要点

通过这个项目,我们学到了:

  • 文件的读取和写入操作
  • os 模块管理文件和目录
  • 获取文件信息(大小、修改时间等)
  • 多行输入的处理
  • 路径操作和文件管理

今天的简易文本编辑器就到这里了!快去创建你的第一篇笔记,记录美好的想法吧!📝

👋 感谢阅读 | 奥饼饼智慧谷

每天一个有趣的编程小项目,让学习变成乐趣!

💡 点赞 + 在看 + 分享,让更多人一起享受编程的快乐!