我想在python中创建一个可以与我的argv一起使用的脚本,但是当我尝试这个简单的if-elif时,它什么也没有给我回复
import sys
if len(sys.argv) == 1:
add = str(sys.argv[1])
print add
elif len(sys.argv) == 2:
add = str(sys.argv[1])
add2 = str(sys.argv[2])
print add + add2
elif len(sys.argv) > 4:
print "too many"
当我运行这样的脚本时,有人可以解释一下原因:
$ python test.py 5 6
并且结果什么都没有,只有我运行这个
$ python test.py 5 6 7 8
结果太多了
答案 0 :(得分:2)
使用模块argparse
的示例。位置参数是必需的,不允许参数,而是可选参数允许N个参数。
from argparse import ArgumentParser
parser = ArgumentParser(description='%(prog)s is a argparse demo')
# Optional argument that requires two arguments
parser.add_argument('-two_args', nargs=2)
# Optional argument that requires 1 to N arguments
parser.add_argument('-one_n_args', nargs='+')
# Optional argument that requires 0 to N arguments
parser.add_argument('-zero_n_args', nargs='*')
args = parser.parse_args()
print 'args.two_args:', args.two_args
print 'args.one_n_args:', args.one_n_args
print 'args.zero_n_args:', args.zero_n_args
试验:
C:\>python demo.py --help
usage: demo.py [-h] [-two_args TWO_ARGS TWO_ARGS]
[-one_n_args ONE_N_ARGS [ONE_N_ARGS ...]]
[-zero_n_args [ZERO_N_ARGS [ZERO_N_ARGS ...]]]
demo.py is demo
optional arguments:
-h, --help show this help message and exit
-two_args TWO_ARGS TWO_ARGS
-one_n_args ONE_N_ARGS [ONE_N_ARGS ...]
-zero_n_args [ZERO_N_ARGS [ZERO_N_ARGS ...]]
C:\>python demo.py -two_args 1
usage: demo.py [-h] [-two_args TWO_ARGS TWO_ARGS]
[-one_n_args ONE_N_ARGS [ONE_N_ARGS ...]]
[-zero_n_args [ZERO_N_ARGS [ZERO_N_ARGS ...]]]
demo.py: error: argument -two_args: expected 2 argument(s)
C:\>python demo.py -two_args 1 2 -one_n_args x -zero_n_args
args.two_args: ['1', '2']
args.one_n_args: ['x']
args.zero_n_args: []
C:\>python demo.py -two_args 1 2 -one_n_args x -zero_n_args a b c d
args.two_args: ['1', '2']
args.one_n_args: ['x']
args.zero_n_args: ['a', 'b', 'c', 'd']
前一段时间我在博客中写了一篇文章(西班牙语,对不起)http://www.3engine.net/wp/2015/02/argparse-modulo-de-analisis-de-linea-de-comandos-para-python/
答案 1 :(得分:1)
sys.argv[0]
是您脚本的名称。参数从1
开始。因此,在第一种情况下,您的sys.argv
实际上类似于['test.py', '5', '6']
答案 2 :(得分:1)
根据已经给出的评论和答案,此程序更新应该可以正常工作:
import sys
if len(sys.argv) == 2:
print(sys.argv[1])
elif len(sys.argv) == 3:
print(str(sys.argv[1]) + str(sys.argv[2]))
elif len(sys.argv) > 3:
print("too many")
我建议你打印一些不清楚的东西。使用简单的print(sys.argv)
,您将获得['test.py', '3', '4']
。在进入文档之前,我总是做这种快速测试,这节省了我很多时间;)。