我正试图使我的python程序在命令行中具有交互性,用户应该能够执行以下操作:
python myprogram.py --create
那么
python myprogram.py --send
这个时候的问题是程序每次都会停止并重新启动,这样我就失去了用第一个命令创建的变量和对象。
我用的是argparse:
parser = argparse.ArgumentParser()
parser.add_argument('-c','--create' ,help='',action='store_true')
parser.add_argument('-s','--send',help='',action='store_true')
args = parser.parse_args()
if args.create:
create()
elif args.send :
send()
我不想在命令之间停止程序,怎么做?
这是一个简单的互动脚本。我使用
argparse
来解析输入行,但在其他情况下,它对操作不是必需的。不过,它还是一种向“create”命令添加选项的简便方法。例如,ipython
使用argparse
来处理其%magic
命令:这可以分解为
while
循环、raw_input
行以及您自己对astr
变量的求值。使用
argparse
的关键是:parse_args
可以获取字符串列表(结果是split()
),而不是使用默认的sys.argv[1:]
。parse_args
发现问题(或'-h'),它会打印一条消息并尝试“退出”。如果要继续,需要捕获该错误,因此需要try
块。parse_args
的输出是一个简单的命名空间对象。可以将参数作为属性访问。在
cmd
和argparse
中的区别是cmd
是"line-oriented command interpreter"
,而argparse
是parser for sys.argv
。您的示例解析您在运行程序时传递的
sys.argv
,然后如果它获得值,则启动一个函数,然后退出。运行程序时,
argparse
只分析sys.argv
。您可以添加一些代码,以便能够使用像函数、类或make-in-program菜单那样传递的
args
进行操作,您可以使用raw_input
。 示例:否则Python argparse and controlling/overriding the exit status code或python argparse - add action to subparser with no arguments?可能会有帮助。
第一个例子显示了如何重写quit,第二个例子显示了如何添加子命令或quitactions。
相关问题 更多 >
编程相关推荐