让python的命令行聊天工具优雅退出

在很多命令行应用程序中,Ctrl-D 被用作发送 EOF(End Of File)标志,通常用来指示输入结束。如果你想在你的 Python 应用程序中实现通过 Ctrl-D 退出功能,你可以捕获 EOFError 异常,该异常在输入流中遇到 EOF 标志时会被抛出。以下是如何修改你的程序以支持使用 Ctrl-D 退出的示例:

from prompt_toolkit import PromptSession
from prompt_toolkit.key_binding.bindings.vi import load_vi_bindings

def main():
    # 创建一个 Vim 模式的 PromptSession
    session = PromptSession()
    vim_bindings = load_vi_bindings()
    session.key_bindings = vim_bindings

    print("聊天客户端启动。输入 'quit' 来退出。输入 '!vim' 打开 Vim 编辑器。")

    try:
        while True:
            try:
                message = session.prompt("你 (Vim模式): ", vi_mode=True)
                if message.lower() == 'quit':
                    break
                elif message.startswith('!'):
                    command = message[1:].strip()
                    if command:  # 确保命令不为空
                        print("执行命令: " + command)
                        # 在这里可以添加命令执行逻辑
                else:
                    print("发送消息: " + message)
                    # 这里可以添加发送消息到后端的逻辑
            except EOFError:
                print("\n检测到 Ctrl-D,程序退出。")
                break
    except KeyboardInterrupt:
        print("\n检测到 Ctrl-C,程序安全退出。")

if __name__ == "__main__":
    main()

代码说明:

  • 使用 try-except 结构来捕获 EOFError 异常,这个异常通常在用户输入 Ctrl-D 时触发。
  • EOFError 被捕获时,程序会打印一条消息并退出主循环,从而结束程序。
  • 这种方法可以在不修改用户已经习惯的控制流的情况下,很自然地集成 Ctrl-D 作为退出命令。

这样,当用户在命令行中按下 Ctrl-D 时,程序能够识别这一操作并优雅地退出。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值