代码之家  ›  专栏  ›  技术社区  ›  Ian Turner

新手python关于sys.argv的问题

  •  0
  • Ian Turner  · 技术社区  · 14 年前

    我目前正在学习一些教程来让自己在python上运行起来,但我似乎碰到过同样的问题几次。我目前正在学习的教程是aloha.py。 Introduction to Simulation 由Norm Matloff提供。

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

    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 回复  |  直到 14 年前
        1
  •  3
  •   ewall    14 年前

    sys.argv用于收集在命令行上为程序提供的选项。因此,您不需要运行文件,而是要运行 python aloha.py 5 (或任何你想要的数字)。

    (否则,您可以直接在代码中设置数字,而不必总是在命令行上期望它,如 s = 5 比如说)

        2
  •  4
  •   Daniel Roseman    14 年前

    回溯显示您的代码中实际上包含了:

    s = int(sys.argv[0])
    

    所以您指的是参数0——脚本名本身——而不是1。

        3
  •  1
  •   Pace    14 年前

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

    python Aloha.py 75
    

    其中75替换为节点数。然后75将变成 argv[1] .

        4
  •  -1
  •   shahjapan    14 年前

    尝试

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