加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:18:57 所属栏目:Python 来源:网络整理
导读:我正在编写一个应该在远程服务器上执行命令的小程序(假设ssh [hostname] [command]周围有一个相当愚蠢的包装器). 我想这样执行它: ./floep [command] 但是,我需要不时传递某些命令行: ./floep -v [command] 所以我决定使用optparse.OptionParser.问题是,我

我正在编写一个应该在远程服务器上执行命令的小程序(假设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 bar
Options: {'verbose': None} args: ['foo','-v','bar']
$./options.py -v foo  bar
Options: {'verbose': True} args: ['foo','bar']
$./options.py foo -a bar
Options: {'verbose': None} args: ['foo','-a','bar']

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读