我在下面创建了这个脚本,它运行正常。但输出不友好(见下文)。我希望第一行只显示主机名和IP并删除(,'[],请建议
('testhostname', [], ['10.10.10.10'])
cannot resolve hostname: 10.10.10.11
import socket
pfile = open ('C:\\Python27\\scripts\\test.txt')
while True:
IP = pfile.readline()
if not IP:
break
try:
host = socket.gethostbyaddr(IP.rstrip())
print host
except socket.herror, err:
print "cannot resolve hostname: ", IP
pfile.close()
答案 0 :(得分:4)
我建议您将打包成单独的变量,然后按照您认为合适的方式打印,而不是打印host
返回的所有gethostbyaddr
元组:
hostname, alias_list, ip_addr_list = gethostbyaddr(IP.rstrip())
print hostname, ip_addr_list # or ip_addr_list[0] if you only want the one IP
如果您想要更好地控制格式,我建议使用str.format
方法:
print "hostname: {}, IP(s): {}".format(hostname, ", ".join(ip_addr_list))
此外,还有一些其他代码建议(与您的主要问题没有直接关系):
with
语句,而不是手动打开和关闭文件。for IP in pfile:
),而不是每次都使用while True:
并调用pfile.readline()
。except socek.herror as err
而不是旧表单和逗号(在Python 2中已弃用,在Python 3中不再存在)。