Python:argv与IndexError

-2 投票
1 回答
590 浏览
提问于 2025-04-18 00:04

我正在尝试复现一篇研究文章的结果,他们提供了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 这个错误。

撰写回答