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

前端之家收集整理的这篇文章主要介绍了python – 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']
原文链接:https://www.f2er.com/python/439110.html

猜你在找的Python相关文章