Python 处理选项和参数
Python handling options and args
我写了 python 代码,我想处理开关和参数。所以我想告诉脚本:
如果您看到 -u
,则参数 print "sth"
:
中没有 -d <name>
if sys.argv=='-u' and sys.argv!='-d':
print "You must use the -d switch!"
sys.exit()
看来这是错误的方法
sys.argv
是一个 list 所以你必须测试成员资格:
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
检查 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()
我写了 python 代码,我想处理开关和参数。所以我想告诉脚本:
如果您看到 -u
,则参数 print "sth"
:
-d <name>
if sys.argv=='-u' and sys.argv!='-d':
print "You must use the -d switch!"
sys.exit()
看来这是错误的方法
sys.argv
是一个 list 所以你必须测试成员资格:
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
检查 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()