我正在尝试实现一个任务,脚本可以加载文件并遍历行并从每行中查找域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行,在 print(socket.gethostbyname(i))socket.gaierror:[Errno -2]名称或服务未知
任何帮助将不胜感激。
谢谢
答案 0 :(得分:3)
问题是string.strip
不会修改字符串,而是从documentation修改字符串:
返回已删除前导和尾随字符的字符串副本。
因此,您可以执行以下操作:
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
答案 1 :(得分:0)
您可以尝试以下吗?有效。 问题是,您可能会在主机名之外加上其他字符串,这可能引发异常。
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
答案 2 :(得分:0)
问题解决了。
我没有将分割结果保存在我的i变量中,该变量没有删除每个域之后的换行符。 感谢所有评论。
谢谢