仅读取部分命令行参数

2024-04-25 21:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我通过命令行给出一个数字,比如说92,它只需要9,完全忽略2。但是,如果我使用arg[1],它将使用2而不是9。 导入系统

for arg in sys.argv:
    print arg

print ""    
print "-----"
print ""    

try:
    argNumber = int(arg[0])
except ValueError:
    argNumber = 0
    print "This is wrong"

for i in range(argNumber, 0, -1):
    print i

另外,由于某些原因,我无法在except ValueError中添加打印“This is wrong”行。它给我一个缩进错误?你知道吗


Tags: 命令行inforis系统sysarg数字
3条回答

您正在使用循环变量arg,因此您正在访问sys.argv[1]的第一个字符,而不是整个字符串。尝试:

try:
    argNumber = int(sys.argv[1])
except ValueError:
    argNumber = 0

我在你的代码片段中没有看到“这是错误的”一行,所以我不能对此发表评论。你知道吗

最后,在每行前面放置4个空格是目前唯一的方法。如果他们支持某种类型的代码隔离(比如GitHub),那就好了,但是他们不支持

问题是您在arg[0]上调用int。现在,arg是初始循环的剩余部分,当您遍历sys.argv中的所有参数时-它是该循环的最后一个元素。因此,当您使用[0]对其进行切片时,实际上是从最后一个参数中获取第一个字符,而不是您想要的第一个参数。你知道吗

您的解决方案是简单地在那里使用sys.argv[1]。你知道吗

循环运行后,arg包含传递的最后一个参数的值,作为字符串。你知道吗

在您的特定情况下,arg = '92'。所以当你做arg[0],你得到'9'arg[1]给你'2'

如果需要第一个参数,请使用sys.argv[1]。你知道吗

相关问题 更多 >