【问题标题】:Error: ValueError: invalid literal for int() with base 10 [duplicate]错误:ValueError:以 10 为底的 int() 的无效文字 [重复]
【发布时间】:2019-04-03 11:45:09
【问题描述】:

我是 Python 新手。当我尝试执行下面的代码来观看这个Video 时,我得到了一个错误。要了解什么是错误,为什么会出现以及如何克服它?

import sys
x = int(sys.argv[1])

错误:

x = int(sys.argv[1])
IndexError: list index out of range

比我从“0”开始我的索引值。 代码:

import sys
x = int(sys.argv[0])

错误:

x = int(sys.argv[0])
ValueError: invalid literal for int() with base 10:

【问题讨论】:

  • sys.argv[0] 是你的 python 脚本的名称(不是整数); sys.argv[1]命令行上的第一个参数(如果有的话)...尝试print(sys.argv)...
  • 你运行的命令是什么?

标签: python


【解决方案1】:

看起来您正在从 Pycharm 本身运行该代码,而 pycharm 不会为您传递这些 argv,因此您会收到 ListIndex 错误。要解决此问题,您需要启动 cmd 然后导航到你的文件所在的目录,然后。

python <filename.py> arg1 arg2

其中 arg1 arg2 可以是任何东西,只要你在脚本中正确处理它们。

x = int(sys.argv[0])
ValueError: invalid literal for int() with base 10:

这是因为 PyCharm 将文件名传递为 argv[0]。在您的代码中,您试图将文件名转换为int,这会导致此错误。

x = int(sys.argv[1]) 无法工作,因为 PyCharm 除了argv[0] 的文件名之外没有传递任何值。所以argv[1] 不存在,因此会出现 ListIndex 错误。

【讨论】:

  • 如何从 PyCharm 运行?
  • 要使用sys.argv 传递值,您需要将其作为脚本运行。所以在pycharm里面有一个命令提示符,它会在控制台旁边。打开它并运行相同的命令。
  • @user7406980 更新了我的答案以说明您为什么会遇到这些特定错误。
【解决方案2】:

与所有问题一样,将其分解成更小的块。

首先,运行sys.argv 您将看到它是一个带有空字符串的列表。这意味着 out of index 错误很明显,因为在第二个索引处没有项目。

接下来,您不能将空字符串用作列表的索引。那将是你的第二个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2020-01-04
    • 2010-12-22
    • 2011-07-07
    • 2019-10-14
    相关资源
    最近更新 更多