python - 打印输出

时间:2013-09-26 20:27:49

标签: python python-2.7

我在下面创建了这个脚本,它运行正常。但输出不友好(见下文)。我希望第一行只显示主机名和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()

1 个答案:

答案 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中不再存在)。