gpt4 book ai didi

python - OptionParser - 支持命令行末尾的任何选项

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

我正在编写一个应该在远程服务器上执行命令的小程序(假设是围绕 ssh [hostname] [command] 的相当愚蠢的包装器)。

我想这样执行:

./floep [command] 

但是,我有时需要传递某些命令行:

./floep -v [command]

所以我决定为此使用 optparse.OptionParser。问题是,有时我的命令也有参数,如果我这样做的话效果很好:

./floep -v "uname -a"

但我也希望它在我使用时工作:

./floep -v uname -a

我的想法是,一旦我遇到第一个非选项参数,之后的所有内容都应该是我命令的一部分。

然而,这给了我:

Usage: floep [options]floep: error: no such option: -a

OptionParser 是否支持这种语法?如果是这样:如何?如果不是:解决此问题的最佳方法是什么?

最佳答案

尝试使用 disable_interspersed_args()

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

parser = OptionParser()
parser.disable_interspersed_args()
parser.add_option("-v", action="store_true", dest="verbose")
(options, args) = parser.parse_args()

print "Options: %s args: %s" % (options, args)

运行时:

$ ./options.py foo -v barOptions: {'verbose': None} args: ['foo', '-v', 'bar']$ ./options.py -v foo  barOptions: {'verbose': True} args: ['foo', 'bar']$ ./options.py foo -a barOptions: {'verbose': None} args: ['foo', '-a', 'bar']

关于python - OptionParser - 支持命令行末尾的任何选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716006/

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