sys.argv中[1]。 IndexError:列表索引超出范围

时间:2017-06-10 12:39:52

标签: python python-2.7

我想找出2张图片之间的相似度,但我收到了这个错误

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:列表索引超出范围

如何解决我的问题?

2 个答案:

答案 0 :(得分: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 :(得分:-1)

您输入的命令必须是:

python script.py img1 img2

然后,你必须使用:

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

我建议你在一行中这样做:

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

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