我是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
如何解决此错误。谢谢!
答案 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文件的路径]”。