gpt4 book ai didi

python - 使用 optparse 的带有可选参数的命令行选项

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:29 25 4
gpt4 key购买 nike

我正在寻找一种使用 optparse Python 模块创建带有可选参数的命令行选项的方法。

例如,有两个命令行:foobar -u -vfoobar -u USERNAME -v。虽然后者将 USERNAME 作为参数,但前者应该检测是否存在参数并从环境变量或其他方式获取用户名,而不是将 -v 视为参数,但作为一种选择。

我知道可以使用 append 操作获取多个参数,但它至少需要一个参数。

有什么解决办法吗?

更新:

如果没有提供参数,为什么这个脚本无法工作?我也给默认值赋予了一些值(value)。不能使用这样的东西吗?

#!/usr/bin/env python                                                                                                                                                             
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-u", "--user", dest="in_dir",
help="write report to FILE", action= "store", default='USERNAME')

(options, args) = parser.parse_args()
if options.in_dir == 'USERNAME':
print' argument supplied or taken from default '
else:
print 'arugment supplied'

执行这个文件后我们得到./选项.py -f用法:options.py [选项]

options.py:错误:-f 选项需要参数

因为我已经给出了一些默认值。为什么它不能从那里获取该值?还有其他解决办法吗?

最佳答案

也许您可以在将 -u 选项添加到解析器之前检查 sys.argv 。如果 sys.argv 上的下一个元素(-u 之后)不是用户名,那么您可以在解析之前将用户名插入列表中。类似下面的代码:

import sys
from optparse import OptionParser as OP
cmdLine = sys.argv
i = cmdLine.index('-u')
if (i+1) == len(cmdLine) or cmdLine[i+1] not in users:
cmdLine.insert(i+1,userName)
p = OP()
p.add_option('-u',action='append')
p.parse_args(cmdLine[1:])

关于python - 使用 optparse 的带有可选参数的命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933141/

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