有关sys.argv的新手Python问题

时间:2010-06-30 15:53:07

标签: python

我目前正在通过一些教程来启动并运行Python,但我似乎几次遇到同样的问题。我目前关注的教程是Norm Matloff在Introduction to Simulation中的Aloha.py。

我遇到的问题似乎在以下代码中:

import random, sys
class node: # one object of this class models one network node
# some class variables
    s = int(sys.argv[1]) # number of nodes

尝试运行程序时出现错误消息:

Traceback (most recent call last):
  File "C:\Python26\Aloha.py", line 8, in <module>
    class node:
  File "C:\Python26\Aloha.py", line 10, in node
    s = int(sys.argv[0])
ValueError: invalid literal for int() with base 10: 'C:\\Python26\\Aloha.py'

当我尝试运行程序时,我发现sys.argv[1]不存在,所以有人知道我可能会出错吗?有没有办法启动程序来设置这些值,还是我的系统设置不正确?

4 个答案:

答案 0 :(得分:4)

回溯显示您在代码中实际拥有此内容:

s = int(sys.argv[0])

所以你指的是参数0 - 脚本名称本身 - 而不是1。

答案 1 :(得分:3)

sys.argv用于收集命令行中给予程序的选项。因此,您不仅要运行该文件,还要运行python aloha.py 5(或您想要的任何数字)。

(否则,你可以直接在代码中设置数字,而不是总是在命令行上预期它,例如在s = 5中。)

答案 2 :(得分:1)

此外,要在运行程序时加载命令行参数,您需要像这样运行程序......

python Aloha.py 75

其中75由节点数替换。 75将成为argv[1]

答案 3 :(得分:-1)

尝试

s = int(sys.argv[-1])