我目前正在通过一些教程来启动并运行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]
不存在,所以有人知道我可能会出错吗?有没有办法启动程序来设置这些值,还是我的系统设置不正确?
答案 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])