gpt4 book ai didi

python - 使我的 python 命令行程序与 argparse 交互

转载 作者:太空狗 更新时间:2023-10-30 00:02:47 24 4
gpt4 key购买 nike

我正在尝试让我的 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()

我不想在命令之间停止程序,怎么办?

示例:https://coderwall.com/p/w78iva

最佳答案

这是一个简单的交互式脚本。我使用 argparse 来解析输入行,但除此之外它对操作来说不是必需的。它仍然是向“创建”命令添加选项的便捷方式。例如,ipython 使用 argparse 来处理它的 %magic 命令:

import argparse
parser = argparse.ArgumentParser(prog='PROG', description='description')
parser.add_argument('cmd', choices=['create','delete','help','quit'])

while True:
astr = raw_input('$: ')
# print astr
try:
args = parser.parse_args(astr.split())
except SystemExit:
# trap argparse error message
print 'error'
continue
if args.cmd in ['create', 'delete']:
print 'doing', args.cmd
elif args.cmd == 'help':
parser.print_help()
else:
print 'done'
break

这可以简化为 while 循环、raw_input 行和您自己对 astr 变量的评估。

这里使用argparse的关键是:

  • parse_args 可以获取字符串列表(split() 的结果)而不是使用默认的 sys.argv[1:].
  • 如果 parse_args 发现问题(或“-h”),它会打印一条消息并尝试“退出”。如果您想继续,则需要捕获该错误,因此需要 try block 。
  • parse_args 的输出是一个简单的命名空间对象。您将参数作为属性访问。
  • 您可以轻松地替换您自己的解析器。

关于python - 使我的 python 命令行程序与 argparse 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com