簡體   English   中英

關於sys.argv的新手Python問題

[英]Newbie Python question about sys.argv

我目前正在閱讀一些教程,以使自己入門並在Python上運行,但似乎幾次遇到相同的問題。 我當前正在關注的教程是Norm Matloff撰寫的《 模擬簡介》中的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]不存在,所以有人知道我可能會出錯嗎? 是否有某種方法可以啟動將設置這些值的程序,或者我的系統設置不正確?

追溯顯示您的代碼中確實包含以下內容:

s = int(sys.argv[0])

因此,您指的是參數0-腳本名稱本身-而不是1。

sys.argv用於收集在命令行上給程序的選項。 因此,您不僅要運行文件,還需要運行python aloha.py 5 (或任何您想要的數字)。

(否則,您可以直接在代碼中直接設置數字,而不必總是在命令行中期望它,例如s = 5 。)

另外,要在運行程序時加載命令行參數,您需要這樣運行程序...

python Aloha.py 75

其中75替換為節點數。 75將成為argv[1]

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM