[英]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.