我编写了一个python代码,我想处理切换和参数。所以我想告诉脚本:
如果您看到-u
,则参数-d <name>
中没有print "sth"
:
if sys.argv=='-u' and sys.argv!='-d':
print "You must use the -d switch!"
sys.exit()
似乎这是错误的方法
答案 0 :(得分:3)
sys.argv
是列表,因此您必须测试会员资格:
if '-u' in sys.argv and '-d' not in sys.argv:
但是,您最好使用argparse
library来处理命令行界面。它不会直接处理相互依赖性,但很容易通过帮助消息扩展使用和退出:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-u", action='store_true')
parser.add_argument("-d")
args = parser.parse_args()
if args.u and not args.d:
parser.error('You must use the -d switch when setting -u!')
演示:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument("-u", action='store_true')
_StoreTrueAction(option_strings=['-u'], dest='u', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument("-d")
_StoreAction(option_strings=['-d'], dest='d', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> args = parser.parse_args(['-u'])
>>> args.u
True
>>> args.d
>>> args.u and not args.d
True
>>> args = parser.parse_args(['-u', '-d', 'foo'])
>>> args.d
'foo'
>>> args.u and not args.d
False
答案 1 :(得分:1)
检查u
列表中的sys.argv
是否,列表-d
中的sys.argv
是否:
if '-u' in sys.argv and '-d' not in sys.argv:
print "You must use the -d switch!"
sys.exit()