Python终端文本编辑器开发求助:优化nangoOS配套Writer应用
解决方案:修复nangoOS Writer编辑器功能问题
以下是修改后的代码,实现了你要求的所有功能,同时解决了输出混乱的问题:
# WRITER - Simple Text Editor for nangoOS import os def write_file(file_name, initial_lines): lines = initial_lines.copy() while True: # 清屏并渲染编辑器界面 os.system("cls") print("--WRITER--") print(f"Editing: {file_name}\n") # 显示当前文件内容(带行号) if lines: for idx, line in enumerate(lines, 1): print(f"{idx:3} | {line}") else: print("(Empty file)") # 显示命令提示 print("\nCommands: :q (quit & save), :s (save), :x (quit without save)") user_input = input("> ") if user_input == ":q": with open(file_name, 'w') as file: file.write('\n'.join(lines)) os.system("cls") print(f"File '{file_name}' saved and closed.") break elif user_input == ":s": with open(file_name, 'w') as file: file.write('\n'.join(lines)) continue # 保存后回到编辑界面 elif user_input == ":x": os.system("cls") print(f"File '{file_name}' not saved.") break else: lines.append(user_input) def open_writer(file_name): os.system("cls") print("--WRITER--") initial_lines = [] # 读取现有文件内容 if os.path.isfile(file_name): print(f"Opening existing file: '{file_name}'") with open(file_name, 'r') as file: initial_lines = [line.rstrip('\n') for line in file.readlines()] else: print(f"Creating new file: '{file_name}'") input("\nPress Enter to start editing...") write_file(file_name, initial_lines) os.system("cls") if __name__ == "__main__": os.system("cls") print("--WRITER--") file_name = input("Enter file name: ") open_writer(file_name)
关键改动说明
顶部标题
--WRITER--:- 在启动程序、打开文件、编辑循环的每次刷新中,清屏后首先渲染标题,确保界面顶部始终显示标识。
打开/退出清屏:
- 启动时先清屏再显示标题和文件名输入框;
- 退出编辑(
:q/:x)时先清屏再提示操作结果; - 编辑器关闭后再次清屏,回到干净的终端状态。
编辑时实时显示文件内容:
- 打开文件时读取所有行内容,传递给编辑函数初始化内容列表;
- 编辑循环中每次刷新界面都会列出当前所有行(带行号),空文件显示
(Empty file),让用户清晰看到编辑状态。
修复输出混乱:
- 给输入添加
>提示符,明确输入位置; - 每次操作后重新清屏刷新界面,避免旧输出堆积;
- 添加
Press Enter to start editing过渡提示,避免文件打开信息一闪而过。
- 给输入添加
内容的提问来源于stack exchange,提问作者Victor Fumei Rosenqvist 6CCE15
相关产品推荐
相关产品推荐

