命令行-int()参数必须是字符串,类似字节的对象或数字,而不是“列表”

时间:2019-02-04 19:40:50

标签: python command-line sys

我有一个非常基本的代码:

import sys

file = sys.argv[0]
arg = int(sys.argv[1:])

def multiplier(x):

    if arg < 1:
        print('Put an argument in')
    else:
        totals = 1
        for i in range(1,x+1):
            totals *= i
        return totals



print(multiplier(arg))

我正在尝试从命令行运行它,并且不断收到此错误:

  File "program.py", line 4, in <module>
arg = int(sys.argv[1:])
TypeError: int() argument must be a string, a bytes-like object or a 
number, not 'list'

我理解该错误,但是我是命令行的新手,所以我对命令行上下文有些困惑。

如果一切顺利,我会期望这样的东西(输入/输出):

>>> Python program.py 10
   3628800

如果有人有任何建议,将不胜感激!

1 个答案:

答案 0 :(得分:3)

方括号中的冒号表示先前列表对象的一部分。在这种情况下,您只希望第二项(索引为1),而不是列表sys.argv的一部分从索引1开始:

arg = int(sys.argv[1])