我正在编写一个应该在远程服务器上执行命令的小程序(假设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
最佳答案
尝试使用
原文链接:https://www.f2er.com/python/439110.htmldisable_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']