使用sys和argv命令行时出现问题

时间:2016-12-10 19:51:51

标签: python python-2.7 python-3.x

from sys import argv

def multii():
    if len(argv) < 2:
        pass

    else:
        for value in values:
            if len(value) == argv[1]:
                print(value)

values = ["acehorrst", "hellorye", "badbadg", "skrskr", "hahahah"]

multii()

我在终端中调用了:“python3”filename.py“9”

所以它会是:“python3 testargv.py 9” 并且它在终端中什么都不做

我认为9将是condiered参数1,并且存在9个字母长的“acehorrst”并且它不起作用,并且无论我放的是什么数字,我对所有单词都有相同的问题。

2 个答案:

答案 0 :(得分:0)

您忘了将argv转换为整数。该行应该是:

  

如果len(value)== int(argv [1]):

答案 1 :(得分:0)

我认为你要找的是比较值的长度和参数的整数值,默认情况下,参数被视为字符串。 因此,执行python3 testargv.py 9会使argv看起来如下 ['testargv.py', '9']

在您的代码中,您将长度与字符串进行比较,将argv[1]转换为int(argv[1])并且它可以正常工作。

from sys import argv

def multii():
    if len(argv) < 2:
        pass

    else:
        for value in values:
            if len(value) == int(argv[1]):
                print(value)

values = ["acehorrst", "hellorye", "badbadg", "skrskr", "hahahah"]

multii()