2013-02-27 132 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