你可以完全坚持使用 python 标准模块,因为它们提供了你需要的一切。
由于open
返回一个可迭代的文件对象(不将整个文件加载到内存中),您可以使用如下代码:
from socket import gethostbyaddr
with open('top-1m.csv') as input:
for line in input:
index, host = line.strip().split(',')
try:
output = gethostbyaddr(host)
print "%s %s is %s/%s" % (index, host, output[0], output[2])
except:
print host, "not found"
结果:
1 facebook.com 是 www-slb-10-08-prn1.facebook.com/['69.171.234.21']
2 google.com 是 fra07s07-in-f100.1e100.net/['209.85.148.100']
3 youtube .com 是 fra07s07-in-f93.1e100.net/['209.85.148.93']
4 yahoo.com 是 ir2.fp.vip.bf1.yahoo.com/['98.139.183.24']
baidu.com not found
我不推荐csv
这里,因为每行总是只有两个值。如果您需要处理诸如引号字符之类的事情,或者如果您需要编写一个 csv 文件等,请使用它。
虽然twisted
它也是一个很棒的网络模块,但对于这样一个简单的任务来说有点过分了。只需使用该socket
模块。