我有一个包含以下导入的脚本:
import os
import sys
import numpy as np
import netCDF4
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
sc = sys.argv[1]
run = sys.argv[2]
...当我运行它时,它返回以下错误消息:
Traceback (most recent call last):
File "/home/brandonsmith/climate-sensitivity-gcm/plot_scripts/map_lowcloud.py", line 11, in <module>
sc = sys.argv[1]
IndexError: list index out of range所以我检查了列表内容,结果却是空的:
In [28]: sys.argv
Out[28]: ['']为什么?
发布于 2020-01-25 03:24:35
当您从命令行提示符运行程序时,它会从命令行程序(一个shell程序,如*nix中的bash,Windows中的cmd提示符)接收参数。举个例子可能会有所帮助:
> python my_program Brandon GreenMatt在本例中,您将告诉命令行程序运行python。您给python提供的参数是"my_program“、"Brandon”和"GreenMatt“。反过来,python试图找到并运行一个名为"my_program“的程序,该程序将接收参数"Brandon”和"GreenMatt“。
Python处理参数的机制是sys.argv。第一个参数-编号为0,即sys.argv -将是程序名。其他参数将按照它们在命令行中出现的顺序加载到sys.argv中。因此,在我上面给出的例子中,my_program将在sys.argv1中看到"Brandon“,而sys.argv2将持有"GreenMatt”。
当命令行上没有参数时,例如:
> python my_program然后,sys.argv1和sys.argv2将不会包含任何内容,从而导致您看到的错误。此外,如果您将程序加载到某种类型的Python交互环境中并运行它,您将看到此错误。
更多信息请参见the docs。
发布于 2020-01-25 05:35:35
对于使用Python交互环境(即Spyder、Jupyter)的任何人,您都需要指定命令行选项。我使用的是Spyder,所以这可以通过在"run“选项卡下找到"configurations per file”按钮,然后选择"command line options“并在运行命令之后输入什么来完成。感谢发布接受答案的人。
https://stackoverflow.com/questions/59902293
复制相似问题