求助,sys.argv[1:]的问题各位好!练习python的时候,发现这么一段代码会报错:host, port sys.argv[1:]# Lo
求助,sys.argv[1:]的问题 各位好! 练习python的时候,发现这么一段代码会报错:
host, port = sys.argv[1:]
# Look up the given data results = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
报错信息: socket.gaierror: [Errno -2] Name or service not known
修改成这样就ok了:
host = "www.baidu.com" port = 80
# Look up the given data results = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
请问这是为什么?使用 host, port = sys.argv[1:] 难道不合理吗?
谢谢各位! [解决办法] 如果argv个数为1怎么办? [解决办法] sys.argv[1:]的类型为list 而等号左边的host,port默认是tuple,类型不匹配,需转换成tuple import sys if sys.argv != 3: print 'argument number must be 3' sys.exit(1) host,port = tuple(sys.argv[1:]) [解决办法] 试试print repr(host), repr(port)看看有没有多余不可显示的字符跑进去... [解决办法] 本人使用楼主的代码:
# test.py import sys import socket
if __name__=='__main__': host, port = sys.argv[1:] # Look up the given data results = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) print results
Resolves the host/port argument, into a sequence of 5-tuples that contain all the necessary argument for the sockets manipulation. host is a domain name, a string representation of IPv4/v6 address or None. port is a string service name (like 'http'), a numeric port number or None.