2013-02-27 134 views
5

我正在寫一個簡單的Python客戶端和服務器,它在我的代碼中正常傳遞服務器地址,但是,我希望用戶能夠進入服務器地址和拋出錯誤,如果它不正確。當我有下面的代碼時,我從終端「列表索引超出範圍」收到錯誤消息。「list index out of range」when using sys.argv [1]

server = (sys.argv[1]) 
serverAdd = (server, '65652') # server address and port number 

任何人都可以幫助我這個請。

當我在python中運行我的客戶端程序時,我希望能夠輸入地址來連接並將其存儲在服務器中。我通過鍵入programname.py直接從命令行運行程序。服務器已在運行偵聽傳入連接。

+2

而你在這麼打電話嗎? – kindall 2013-02-27 20:34:06

+0

以上是不是命令行調用? – user1978826 2013-02-27 20:34:51

+0

您可能想嘗試打印列表以確保其中包含某些內容。 'print(sys.argv)' – 2013-02-27 20:35:03

回答

12

有了這條巨蟒:

import sys 

print(sys.argv) 

而與此命令調用:

>python q15121717.py 127.0.0.1 

我得到這樣的輸出:

['q15121717.py', '127.0.0.1'] 

我想你是不是傳遞一個參數傳遞給你的Python腳本

現在,您可以稍微更改代碼以從命令行獲取服務器,或在未傳遞任何服務器時提示輸入服務器。在這種情況下,你會看到類似這樣的東西:

if len(sys.argv) > 1: 
    print(sys.argv[1]) 
else: 
    print(input("Enter address:")) 
+0

我認爲你的權利。我是我認爲,sys.argv [1]將是第二個元素等......所以在上面的情況sys.argv ['127.0.0.1'] – user1978826 2013-02-27 20:49:51

+0

感謝您的幫助:) – 2013-02-27 20:51:00