2017-06-10 106 views
-1

我想找出2个图像之间的相似性,但我发现这个错误sys.argv [1]。 IndexError:列表索引超出范围

if __name__ == '__main__': 
    img1 = sys.argv[0] 
    img2 = sys.argv[1] 

    # Create image objects 
    image1 = Image.open(img1) 
    image2 = Image.open(img2) 

    # Test pixel by pixel 
    get_image_pixel_similarity(img1, img2) 

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

我怎样才能理清我的问题?

+0

什么是你输入启动脚本中的命令? – jadsq

+0

你如何运行脚本?另外:sys.argv [0]是脚本的名字;你需要sys.argv [1]和sys.argv [2]。 – phd

回答

-1

钍命令你的类型必须是:

python script.py img1 img2 

然后,你必须使用:

img1 = sys.argv[1] 
img2 = sys.argv[2] 

我建议你在一行做到这一点:

img1, img2 = sys.argv[1:2] 

argv的是一个以脚本名称开头的列表。

+0

如果'1'超出范围,那么'1:'甚至超出范围...... – jadsq

+0

或'img1,img3 = sys.argv [1:2]'如果在' sys.argv'。 –

1

您需要调用程序为这样:

./myscript.py path/to/img1 path/to/img2 

而且,你的论点将在sys.argv[1]sys.argv[2],因为sys.argv[0]商店名称你的Python文件。

此外,如果使用CMD行参数,我建议做一个小的错误检查,比如:

if __name__ == '__main__': 
    if len(sys.argv) < 3: 
     print('Insufficient arguments') 
     exit() 

    img1 = sys.argv[1] 
    img2 = sys.argv[2] 
    .... 
+1

请注意,您也可以调用'python ./myscript.py path/to/img1 path/to/img2',这会得到完全相同的结果。 – jadsq

+0

假设他们只在同一个目录中。 –

+0

sys.argv [1]也超出范围 – user7442628

相关问题