使用简单的代码从ip地址获取主机名。
#!/usr/bin/python
import socket
import os
import sys
try:
fdes = open ("ip.txt","r")
for line in fdes.readlines():
print socket.gethostbyaddr(line)
except Exception:
pass
例如ip.txt有ip地址:
10.10.1.10, 10.10.1.20, 10.10.1.30, 10.10.1.40, 10.10.1.50, 10.10.1.60, 10.10.1.70,
10.10.1.40没有主机名,所以代码在这里打破,不再继续,错误是“socket.herror:[errno 1]未知主机”
如果主机名不能用作IP地址,我怎么能强行忽略错误?
答案 0 :(得分:1)
这会将与主机名相关的代码移动到try / except块中,同时保持文件读取内容;因此,如果抛出异常,您的文件读取代码仍将继续。
fdes = open("ip.txt","r")
for line in fdes.readlines():
try:
print socket.gethostbyaddr(line)
except socket.error:
pass
注意:此代码仅忽略socket.error
个异常,同时保留所有其他异常未处理(因此抛出KeyboardInterrupt的Ctrl + C仍会停止程序)。
答案 1 :(得分:1)
使用Exception
替换代码中的socket.error
:
try:
# Do something with sockets that might throw an error
except socket.error:
pass # Basically, ignore the error
这将确保您不会无意中忽略代码中的其他错误。
如果您想对错误做些什么,也许记录下来,请使用以下代码:
try:
# Operation that might throw a socket error
except socket.error as e:
print e
# Do something with the error object