如何创建带$ myApp>提示符的命令行应用及配置运行后效果
嘿,我来帮你搞定这个带自定义提示符的交互式命令行应用!其实不管你用什么语言,核心思路都是持续监听用户输入+自定义提示符输出,我给你用Python和Node.js举两个最常用的例子,你可以参考:
方案1:Python 用内置
cmd模块(快速搭建) 如果你用Python,cmd模块简直是为这种场景量身定做的,不用自己写循环,直接继承类就能搞定:
import cmd class MyInteractiveApp(cmd.Cmd): # 直接设置你想要的提示符样式 prompt = '$ myApp> ' # 定义hello命令,输入hello就会触发这个方法 def do_hello(self, args): if args: print(f"👋 你好, {args}!") else: print("👋 你好呀!") # 定义exit命令,返回True就会退出程序 def do_exit(self, args): print("👋 再见啦!") return True # 自定义help提示(可选,默认有自带的help) def do_help(self, args): print("可用命令:") print(" hello [名字] - 打招呼") print(" exit - 退出应用") if __name__ == '__main__': MyInteractiveApp().cmdloop()
运行后你就能看到$ myApp>的提示符,输入hello 张三或者exit都能正常响应,是不是很简单?
方案2:Python 用
readline手动实现(更灵活) 如果需要更定制化的逻辑(比如实时输入处理、自定义补全),可以用readline配合循环手动实现,自由度更高:
import readline def run_my_app(): prompt = '$ myApp> ' # 开启命令历史记录,用户可以按上下箭头查看之前的输入 readline.set_history_length(50) while True: try: # 获取用户输入,自动带上提示符 user_input = input(prompt).strip() if not user_input: continue # 空输入直接跳过,重新显示提示符 # 处理各种命令 if user_input == 'exit': print("👋 再见!") break elif user_input.startswith('hello'): # 提取名字参数 name = user_input.split(maxsplit=1)[1] if ' ' in user_input else '朋友' print(f"👋 你好, {name}!") else: print(f"❓ 未知命令:{user_input},输入help查看可用命令") except KeyboardInterrupt: # 处理用户按Ctrl+C的情况,避免程序崩溃 print("\n😯 别着急,输入exit可以正常退出哦") except EOFError: # 处理用户按Ctrl+D的情况 print("\n👋 再见!") break if __name__ == '__main__': run_my_app()
额外福利:Node.js 实现示例
如果你用Node.js,用官方的readline模块也能快速搞定:
const readline = require('readline'); // 创建readline实例,指定提示符 const rl = readline.createInterface({ input: process.stdin, output: process.stdout, prompt: '$ myApp> ' }); // 启动提示符 rl.prompt(); // 监听用户输入事件 rl.on('line', (input) => { const cmd = input.trim(); switch(cmd) { case 'hello': console.log('👋 你好呀!'); break; case 'hello 李四': console.log('👋 你好, 李四!'); break; case 'exit': console.log('👋 再见啦!'); rl.close(); break; default: console.log(`❓ 未知命令:${cmd}`); } // 输入完成后重新显示提示符 rl.prompt(); }); // 监听退出事件 rl.on('close', () => { process.exit(0); });
这些例子运行后都能实现你想要的$ myApp>交互提示符,而且支持自定义命令逻辑,你可以根据自己的需求修改扩展~
内容的提问来源于stack exchange,提问作者Ali Mousa
相关产品推荐
相关产品推荐

