使用sys.argv [1]时"列表索引超出范围"

use*_*826 8 python command-line-arguments python-3.x

我正在编写一个简单的Python客户端和服务器,它可以很好地在我的代码中传递服务器地址,但是,我希望用户能够输入服务器地址并抛出错误,如果它不正确.当我有下面的代码时,我收到来自终端"列表索引超出范围"的错误消息.

server = (sys.argv[1])
serverAdd = (server, '65652') # server address and port number
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我这个.

当我在python中运行我的客户端程序时,我希望能够输入一个地址来连接并将其存储在服务器中.我通过输入programname.py直接从命令行运行程序.服务器已在运行侦听传入连接.

Jas*_*ske 15

有了这个Python:

import sys

print(sys.argv)
Run Code Online (Sandbox Code Playgroud)

并使用此命令调用:

>python q15121717.py 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

['q15121717.py', '127.0.0.1']
Run Code Online (Sandbox Code Playgroud)

我认为你没有将参数传递给Python脚本

现在,您可以稍微更改代码,以便在没有传递任何服务器时从命令行或服务器提示服务器.在这种情况下,你会看到这样的事情:

if len(sys.argv) > 1:
    print(sys.argv[1])
else:
    print(input("Enter address:"))
Run Code Online (Sandbox Code Playgroud)