向临时Python脚本传递单个命令的最佳方式

1 投票
1 回答
1383 浏览
提问于 2025-04-18 12:34

我经常写一些临时的Python脚本,想要实现以下两个功能:1)运行这个脚本(可能是通过双击它),然后提示我输入一个命令,这个命令会执行文件中的某个特定代码块。说明文档里会包含这些指令。2)通过命令行参数传递这个命令。

我想确保自己没有遗漏什么,因为我重复写这段代码的次数挺多的。我想知道有没有更简洁或者更符合Python风格的方法来做到这一点?我知道有argparse和pocoo的click库。但我并不想要更灵活的方案,只想要尽可能简单的(我希望能控制在2-3行代码内)。

"""
hello world
"""
import sys
if len(sys.argv) < 2: print sys.modules[__name__].__doc__.strip()
cmd1 = sys.argv[1] if len(sys.argv) == 2 else raw_input('>')
# snippets and functions below this line

if cmd1 == 'test':
    pass

1 个回答

2
if len(sys.argv) < 2: print sys.modules[__name__].__doc__.strip()

cmd1 = sys.argv[1] if len(sys.argv) == 2 else raw_input('>')

def cmd_test():
   print "Run CMD test"

def cmd_something():
   print "run cmd somrthing"


try:
    globals()["cmd_%s"%cmd1]()
except KeyError:
    print "ERROR Unknown Command"

我喜欢这样做……就是给“命令”函数起个名字,让它们不在全局空间里。

你还可以改进这个方法,让它可以传递参数等等。

撰写回答