You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

关键改动说明

  1. 顶部标题--WRITER--:

    • 在启动程序、打开文件、编辑循环的每次刷新中,清屏后首先渲染标题,确保界面顶部始终显示标识。
  2. 打开/退出清屏:

    • 启动时先清屏再显示标题和文件名输入框;
    • 退出编辑(:q/:x)时先清屏再提示操作结果;
    • 编辑器关闭后再次清屏,回到干净的终端状态。
  3. 编辑时实时显示文件内容:

    • 打开文件时读取所有行内容,传递给编辑函数初始化内容列表;
    • 编辑循环中每次刷新界面都会列出当前所有行(带行号),空文件显示(Empty file),让用户清晰看到编辑状态。
  4. 修复输出混乱:

    • 给输入添加> 提示符,明确输入位置;
    • 每次操作后重新清屏刷新界面,避免旧输出堆积;
    • 添加Press Enter to start editing过渡提示,避免文件打开信息一闪而过。

内容的提问来源于stack exchange,提问作者Victor Fumei Rosenqvist 6CCE15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:02:21