我试图实现一个任务,脚本可以加载一个文件,遍历行,并从每一行中查找域ip。
尝试使用以下代码执行此操作:
import socket
with open('test.txt','r') as f:
for i in f.readlines():
i.strip('\n')
i.strip('\t')
i.strip('\r')
print(socket.gethostbyname(i))
f.close()但却显示出错误
追溯(最近一次调用):文件"ip.py",第8行,打印(socket.gethostbyname(I)) socket.gaierror: Errno -2名称或服务不知道
任何帮助都将不胜感激。
谢谢
发布于 2018-08-12 06:11:18
问题是string.strip不修改文档中的字符串
返回字符串的副本,并删除前导字符和尾随字符。
因此,您可以执行如下操作:
import socket
with open('test.txt','r') as f:
for i in f.readlines():
i = i.strip('\n')
i = i.strip('\t')
i = i.strip('\r')
print(socket.gethostbyname(i))
f.close()在如下所示的test.txt上运行该程序:
test.com
google.com
yahoo.com我得到:
69.172.200.235
172.217.26.110
98.138.219.232发布于 2018-08-12 05:37:53
你能在下面试试吗。啊,真灵。问题是,除了主机名之外,您可能还有其他字符串,主机名可能会引发异常。
import socket
a = ['word2','www.google.co.in','word3']
for i in a:
try:
i.strip('\n')
i.strip('\t')
i.strip('\r')
print(socket.gethostbyname(i))
except socket.gaierror:
print("Unable to get Hostname and IP")输出:
Unable to get Hostname and IP
172.217.195.94
Unable to get Hostname and IP发布于 2018-08-12 06:09:45
问题解决了。
我没有在i变量中保存拆分结果,该变量没有删除每个域之后的新行字符。感谢各位的评论。
谢谢
https://stackoverflow.com/questions/51805947
复制相似问题