Форум сайта python.su
Не пинайте, я только учусь. Бьюсь головой уже 3 часа, без внешней помощи буду биться еще долго)
#! /usr/bin/env python
import dns.resolver
domen = open('./day.domen', 'r')
for line in domen:
print line
answers = dns.resolver.query(line, 'MX')
for rdata in answers:
print rdata.exchange
domen.close()
skv:/mnt/mail/root/python# ./catch_mx.py
'domen.ru'
Traceback (most recent call last):
File "./catch_mx.py", line 7, in <module>
answers = dns.resolver.query(line, 'MX')
File "/usr/lib/python2.5/site-packages/dns/resolver.py", line 719, in query
return get_default_resolver().query(qname, rdtype, rdclass, tcp)
File "/usr/lib/python2.5/site-packages/dns/resolver.py", line 663, in query
raise NXDOMAIN
dns.resolver.NXDOMAIN
answers = dns.resolver.query(line, 'MX')
answers = dns.resolver.query('domen.ru', 'MX')
Офлайн
В файле у вас домены в кавычках, вот оно и пытается резолвить ‘domen.ru’ с кавычками. А с переменными там все нормально.
Офлайн
Кавычки это уже я сам наставил когда бился головой) Вот выполнение без кавычек.
skv:~/python# ./catch_mx.py
kzn.ertelecom.ru
Traceback (most recent call last):
File "./catch_mx.py", line 7, in <module>
answers = dns.resolver.query(line, 'MX')
File "/usr/lib/python2.5/site-packages/dns/resolver.py", line 719, in query
return get_default_resolver().query(qname, rdtype, rdclass, tcp)
File "/usr/lib/python2.5/site-packages/dns/resolver.py", line 663, in query
raise NXDOMAIN
dns.resolver.NXDOMAIN
Офлайн
Значит конец строки там. Сделайте line.strip().
Офлайн
Помогли решить : http://www.linux.org.ru/forum/development/5416445?lastmod=1286461107288
Дело было из-за переноса строк в файле.
#! /usr/bin/env python
import dns.resolver
domen = open('./day.domen', 'r')
answers = []
for line in domen:
l = dns.resolver.query(line[:-1], 'MX')
for rdata in l:
print 'Host', rdata.exchange, 'has preference', rdata.preference
domen.close()
Отредактировано (Окт. 7, 2010 17:21:35)
Офлайн
Я все-таки рекомендую strip. удалит один символ, а их может быть и два в другой операционной системе. И пробелы он тоже удалит, кстати.
Офлайн
Edприслушайтесь к совету. во всеми любимой Windows, - будет не корректно, поскольку конец строки это 2 символа - \r\n
Я все-таки рекомендую strip
Офлайн