LINUX.ORG.RU

Python простой вопрос


0

1

Не пинайте, я только учусь. Бьюсь головой уже 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')
Хотя ipython первый вариант работает.

Ответ на: комментарий от anonymous


Код отформатирован, в форуме он как-то странно приобразовываеться.

skv:~/python# head ./day.domen
'kzn.ertelecom.ru'
'at-e.ru'
'royint.com'
'gmcs.ru'
'metran-moscow.ru'
lietpakrus.spb.ru
nppgid.ru
kovad-m.ru
qip.ru

Пробывал в вайле и с кавычками и без.

tux-tools
() автор топика
#! /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()

Обрати внимание на срез

najar
()
Ответ на: комментарий от anonymous

я и говорю «код должен навести на мысли» :). Написал как быстрее было, код не проверял и знаю что заранее содержит ошибки. Эдакое домашнее задания - найти и исправить проблемы в коде :)

true_admin ★★★★★
()
Ответ на: комментарий от najar

Ошибку понял. Сам бы не догодался. Спасибо!

tux-tools
() автор топика
Ответ на: комментарий от najar

Ничего подобного:

>>> with open('/etc/resolv.conf') as f:
...     for line in f:
...         print line
...         

Всё нормально будет

true_admin ★★★★★
()
Ответ на: комментарий от baverman

Согласен. Я просто показал, что `[:-1]' - не самый удачный способ отсечения ненужного whitespace в конце строки.

shylent
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.