Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2006 20:31:52

batman
От:
Зарегистрирован: 2006-08-09
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление вывода

И так, и так, результат один и тот же.
Начинаю сомневаться в собственной нормальности. Но может есть еще какой-то способ перехватить ответы сервера, чтоб проанализировать правильность происходящего?



Офлайн

#2 Сен. 23, 2006 21:39:12

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление вывода

Попробуй так:

import wx, smtplib
import sys as _sys

class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, pos=(150, 150), size=(350, 200))

panel = wx.Panel(self)
btn = wx.Button(panel, -1, “Close”)
funbtn = wx.Button(panel, -1, “Send”)

self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn)
self.Bind(wx.EVT_BUTTON, self.OnFunButton, funbtn)

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btn, 0, wx.ALL, 10)
sizer.Add(funbtn, 0, wx.ALL, 10)
panel.SetSizer(sizer)
panel.Layout()

def OnTimeToClose(self, evt):
self.Close()

def OnFunButton(self, evt):
fromaddr = “From: zzz@zzz.zzz
toaddrs = “To: aaa@aaa.aaa
msg = ‘Test message’
print “Message length is %d” % len(msg)
server = smtplib.SMTP('smtp.zzz.zzz')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, “Simple wxPython App”)
self.SetTopWindow(frame)

print “Print statements go to this stdout window by default.”

frame.Show(True)
return True

def RedirectStdio(self, filename=None):
if filename:
_sys.stdout = _sys.stderr = smtplib.stderr = open(filename, ‘a’)
else:
self.stdioWin = self.outputWindowClass()
_sys.stdout = _sys.stderr = smtplib.stderr = self.stdioWin

app = MyApp(redirect=True)
app.MainLoop()

%) столько ещё интересных идей есть…



Офлайн

#3 Сен. 23, 2006 22:32:09

batman
От:
Зарегистрирован: 2006-08-09
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление вывода

Спасибо, попробую.



Офлайн

#4 Сен. 27, 2006 13:48:38

batman
От:
Зарегистрирован: 2006-08-09
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление вывода

Сегодня только руки дошли попробовать. Большое спасибо ofigetitelno. Все заработало. Осталось только еще понять как и почему.



Офлайн

#5 Сен. 27, 2006 14:06:12

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2250
Репутация: +  40  -
Профиль   Отправить e-mail  

Перенаправление вывода

а что тут понимать? переназначил дескриптору, приравняв их дескриптору файла)

Офлайн

#6 Сен. 27, 2006 16:18:46

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление вывода

:)
фигня в том, что в том же wxPython, перенаправление делается как:
import sys as _sys
_sys.stdout = _sys.stderr = open(filename, ‘a’)
что, по сути, не совсем правильно.
Куски:

import sys
sys.stdout = sys.stderr = open('zzz.log', ‘a’)
print ‘one’
from sys import stderr
print >>stderr, ‘two’

и

import sys
from sys import stderr
sys.stdout = sys.stderr = open('zzz.log', ‘a’)
print ‘one’
print >>stderr, ‘two’

работают, слегка, по разному…
А это не совсем прикольно, когда нужно следить за порядком импортов, да ещё и в стандартных либах.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version