在 Python 里做“命令控制”通常有以下几种常见场景,我按从简单到专业给你讲,并配上可直接运行的示例。
input() 做交互式命令适合:简单脚本、学习、小工具
while True:
cmd = input(">>> ").strip()
if cmd == "exit":
print("退出程序")
break
elif cmd == "hello":
print("你好!")
else:
print("未知命令:", cmd)
✅ 特点
sys.argv 做命令行参数(非交互)适合:一次性命令工具
import sys
args = sys.argv
print("命令:", args[0])
print("参数:", args[1:])
运行:
python test.py start --force
argparse(标准库)适合:正式 CLI 工具
import argparse
parser = argparse.ArgumentParser(description="示例命令工具")
parser.add_argument("action", choices=["start", "stop"])
parser.add_argument("--force", action="store_true")
args = parser.parse_args()
if args.action == "start":
print("启动中", "(强制)" if args.force else "")
运行:
python cli.py start --force
✅ 优点
-hcmd 模块(系统自带)适合:类 shell 的命令控制程序
import cmd
class MyShell(cmd.Cmd):
prompt = "myshell> "
def do_hello(self, arg):
print("你好", arg)
def do_exit(self, arg):
return True
if __name__ == "__main__":
MyShell().cmdloop()
运行后输入:
myshell> hello world
myshell> exit
✅ 自动支持:
help?click(最流行)import click
@click.command()
@click.argument("name")
@click.option("--count", default=1)
def hello(name, count):
for _ in range(count):
click.echo(f"Hello {name}")
if __name__ == "__main__":
hello()
typer(基于类型提示,更现代)import typer
app = typer.Typer()
@app.command()
def hello(name: str):
print(f"Hello {name}")
if __name__ == "__main__":
app()
subprocessimport subprocess
subprocess.run(["ls", "-l"])
| 需求 | 推荐 |
|---|---|
| 学习 / 小脚本 | input |
| 单次命令 | argparse |
| 类 shell 工具 | cmd |
| 正式 CLI | click / typer |
| 远程控制 | socket + 协议 |
如果你能告诉我:
我可以直接帮你设计一套完整结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。