Python:argv与IndexError
我正在尝试复现一篇研究文章的结果,他们提供了Python代码。里面有一个脚本用来下载数据,我想通过终端运行这个脚本,命令是:
python getData.py
但是它报了一个错:
File "getData.py", line 127, in dataFile = sys.argv[1]+"/raw-comp.txt" IndexError: list index out of range
相关的Python代码部分在这里:
if __name__ == '__main__' :
dataFile = sys.argv[1]+"/raw-comp.txt"
# Read the data
我不知道这是否有关系,但'getData.py'脚本在'src'文件夹下,而'raw-comp.txt'文件在'data'文件夹下。
我查看了这里的一个解决方案,python : IndexError: list index out of range,它说argv
存储了命令行参数,你需要在调用它之前传递参数。我也查了这个,from sys import argv - what is the function of "script",其中脚本和文件名被赋值给了argv。但在这段代码中,argv在上面的代码片段之前并没有定义,而且这是脚本中第一次出现argv。
我真的不知道为什么它没有运行,因为他们说不需要任何修改就能工作。谢谢你们。
编辑:他们在脚本下方提供了描述,但没有提到需要从终端传递任何参数。
getData: a script to download and/or build the data files.
1 个回答
1
试着这样运行它:
python getData.py ../data
这里提到的 sys.argv[1]
意味着这个程序必须至少传入一个命令行参数才能运行。
根据 Python 文档 的说明,sys.argv
是一个包含命令行参数的列表,列表的第一个元素 sys.argv[0]
是脚本的名称。当没有传入任何命令行参数时,代码试图访问一个不存在的元素,就会出现 IndexError
这个错误。