IndexError :::列表索引超出范围

时间:2020-04-23 07:10:10

标签: python

我是python的新手。我在下面写了一个代码。代码正在运行。

if __name__ == "__main__":
    INPUT = sys.argv[1]
    assert len(sys.argv) == 2, '[USAGE] $ python %s C:/Users/NH/Pictures/Screenshots/img_6.jpg)' % (os.path.basename(__file__), INPUT)
    assert os.path.isfile(INPUT), '%s not found' % INPUT

    # read color image with grayscale flag: "cv2.IMREAD_GRAYSCALE"
    img = cv2.imread(INPUT, cv2.IMREAD_GRAYSCALE)
    # print grayscale image
    cv2.imwrite('grey_%s' % INPUT, img)
    print('Saved grayscale image @ grey_%s' % INPUT)

但是当我尝试运行时,出现此错误

INPUT = sys.argv[1]
IndexError: list index out of range

如何解决此错误。谢谢!

2 个答案:

答案 0 :(得分:0)

IndexError意味着您的列表不够长,无法包含您要调用的索引。

记住:

a_list = [1,2,3]
print(a_list[1])
output: 2

因为第一个索引为0

答案 1 :(得分:0)

“ sys.argv”存储您在执行程序时输入到终端的以空格分隔的字符串列表(称为“命令行参数”)。 sys.argv [0]始终是程序名称,如果在程序名称后再输入其他任何内容,则列表中的其他插槽均不会填充。运行该程序后,除程序名称外,您一定不能输入其他任何内容,因此[1]不会填任何内容。

在这种情况下,您似乎希望此插槽填充图像文件的路径。因此,您无需在终端中输入“ python [程序名称] .py”,而需要键入“ python [程序名称] .py [img文件的路径]”。