【问题标题】:sys.argv : list indedx out of rangesys.argv : 列表索引超出范围
【发布时间】:2013-04-13 09:43:32
【问题描述】:

部分脚本

if sys.argv[1]  == 'help':
    help()
elif len(sys.argv) < 5:
    use()
else:
    pass


host = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
node = sys.argv[4]
opts = sys.argv[5]

这只是发生问题的代码的一部分。当我运行它时,发生了错误:

host = sys.argv[1]

IndexError: 列表索引超出范围

一切运行良好,但我刚刚重新安装了 python。但是,现在它正在制造问题。这仍然在linux中运行良好。

" 通过一些搜索,我知道'.py 注册表中的关联不正确。它最后缺少 %*。'但是,我不知道如何解决它。

环境变量中的当前设置路径是 C:\Python27;C:\Python27\Lib\site-packages\;C: \Python27\脚本\

【问题讨论】:

  • 你能告诉我们你调用python脚本的命令行吗?
  • 在尝试调用条目(在本例中为参数)之前,始终检查 a 列表的(最低要求)长度。你必须评估你的意见。
  • 再次提一下:一切运行良好,但我刚刚重新安装了 python。但是,现在它正在制造问题。这仍然在linux中运行良好。 ” 通过一些搜索,我知道 '.py 注册表中的关联不正确。它最后缺少 %*。'但是,我不知道如何修复它。环境变量中的当前设置路径是 C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\
  • 我遇到了一个问题,在几年前在这里问过同样的问题:stackoverflow.com/questions/7690150/…
  • ,您能否至少向我们展示您调用脚本的命令行(例如python my_script.py 1 toto coucou "2013-01-01")和/或写为您的第一行脚本print str(sys.argv)

标签: python indexing


【解决方案1】:

sys.argv 和其他列表一样,只是它是从命令行创建的。

它包含的项目与您用于运行脚本的命令行所指示的一样多。

代码从来都不是正确的,问题与您的 Python 文件关联或路径无关。 (如果是这样,您会从命令行收到错误,但您会收到来自 Python 的错误。)

问题是你假设会有一个sys.argv[1],通过在检查sys.argv 的长度之前检查'help'。如果脚本在没有任何参数的情况下运行,则 [1] 索引超出范围。

【讨论】:

  • 即使在给出论据之后也不行.. 它不工作.. 另外,再次提到它在 linux 中运行良好,并且在我在 windows 上重新安装 python 之前运行良好
  • 您是否尝试过调整程序以向您展示它认为sys.argv 包含的内容?
  • 我尝试了所有,甚至制作了自定义的另一个脚本。即使那样也不好用
  • @Lady 只需在脚本开头输入print sys.argv 看看会发生什么
  • 我遇到了一个问题,在几年前在这里问过同样的问题:stackoverflow.com/questions/7690150/…
猜你喜欢
  • 1970-01-01
  • 2021-07-13
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
相关资源
最近更新 更多