python sys.argv[1]与sys.argv[1:]

2024-04-25 23:21:41 发布

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

我写了这段代码:

#!/usr/bin/env python
import sys

if sys.argv[1] :
    print sys.argv[1]

键入时在控制台中尝试此操作: $python py.py xxx年 那印着xxx 当我不使用任何参数时,会出现一个错误:

Traceback (most recent call last): File "py.py", line 4, in if sys.argv[1] : IndexError: list index out of range

现在有一些改变:

#!/usr/bin/env python
import sys

if sys.argv[1:] :
    print sys.argv[1:]

你看我把[1]也改成了[1:],现在如果我在控制台中键入“$python py.py”,并且忘记返回无错误的参数。 幕后发生了什么?


Tags: 代码pyimportenv参数键入ifbin
2条回答

sys.argv是一个参数列表(在终端中随命令一起传入),但如果不传递任何参数并访问空列表的索引1,则会出现明显的错误(索引器错误)。 但是,在第二种情况下,从索引1进行切片,并将列表的成员与索引>;1一起使用时,即使列表是空的,也不会出现问题,因为切片后的列表也将是空的,我们不会得到任何错误。

sys.argv是参数列表。 因此,当您在没有任何参数的情况下执行脚本时,访问索引1的该列表为空,并且访问空列表的索引时,将引发一个IndexError

使用第二个代码块,您将执行一个list slice,并检查来自索引1和forward的列表片段是否不为空,然后打印该列表片段。 之所以这样做是因为如果您有一个空列表,并且像这样对其执行切片操作,那么切片将返回一个空列表。

last_list = [1,2,3]
if last_list[1:]:
    print last_list[1:]
>> [2,3]

empty_list = []
print empty_list[:1]
>> []

相关问题 更多 >