首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入sys后列出"sys.argv“为空

导入sys后列出"sys.argv“为空
EN

Stack Overflow用户
提问于 2020-01-25 03:05:27
回答 2查看 300关注 0票数 0

我有一个包含以下导入的脚本:

代码语言:javascript
复制
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]

...

当我运行它时,它返回以下错误消息:

代码语言:javascript
复制
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

所以我检查了列表内容,结果却是空的:

代码语言:javascript
复制
In [28]: sys.argv
Out[28]: ['']

为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-25 03:24:35

当您从命令行提示符运行程序时,它会从命令行程序(一个shell程序,如*nix中的bash,Windows中的cmd提示符)接收参数。举个例子可能会有所帮助:

代码语言:javascript
复制
> 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”。

当命令行上没有参数时,例如:

代码语言:javascript
复制
> python my_program

然后,sys.argv1和sys.argv2将不会包含任何内容,从而导致您看到的错误。此外,如果您将程序加载到某种类型的Python交互环境中并运行它,您将看到此错误。

更多信息请参见the docs

票数 2
EN

Stack Overflow用户

发布于 2020-01-25 05:35:35

对于使用Python交互环境(即Spyder、Jupyter)的任何人,您都需要指定命令行选项。我使用的是Spyder,所以这可以通过在"run“选项卡下找到"configurations per file”按钮,然后选择"command line options“并在运行命令之后输入什么来完成。感谢发布接受答案的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59902293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档