Форум сайта python.su
Есть скрипт, который конвертирует pdf файлы в swf. Вот основной кусок
swf = gfx.SWF()
swf.setparameter("flashversion", "9");
for pagenr in xrange(1,doc.pages+1):
page = doc.getPage(pagenr)
swf.startpage(page.width, page.height)
page.render(swf)
swf.endpage()
writeStatus(status, "Error: " + str(sys.exc_info()[0]) + ":" + str(sys.exc_info()[1]))
writeStatus(status, "Progress: %d/%d" % (pagenr, doc.pages))
swf.save(dir + "/" + "doc_temp.swf")
Офлайн
Это вываливается в stdout. Перенаправьте его куда вам нужно
import sys
class Out:
def __init__(self):pass
def write(self,data):
# делаем что нибудь с data
sys.stdout=Out()
print 'test'
Офлайн
Я нашел такой код:
print 'Dive in'
saveout = sys.stdout
fsock = open('out.log', 'w')
sys.stdout = fsock
print 'This message will be logged instead of displayed'
sys.stdout = saveout
fsock.close()
saveout = sys.stdout
fsock = open(dir + "/" + 'out.log', 'w')
sys.stdout = fsock
print 'This message will be logged instead of displayed'
swf = gfx.SWF()
swf.setparameter("flashversion", "9");
for pagenr in xrange(1,doc.pages+1):
page = doc.getPage(pagenr)
swf.startpage(page.width, page.height)
page.render(swf)
swf.endpage()
swf.save(dir + "/" + "doc_temp.swf")
os.rename(dir + "/" + "doc_temp.swf",dir + "/" + "doc.swf")
sys.stdout = saveout
fsock.close()
Офлайн
Попробовал сделать тоже самое для stderr :
fsock = open(dir + "/" + 'error.log', 'w')
sys.stderr = fsock
raise Exception, 'this error will be logged'
swf = gfx.SWF()
swf.setparameter("flashversion", "9");
for pagenr in xrange(1,doc.pages+1):
page = doc.getPage(pagenr)
swf.startpage(page.width, page.height)
page.render(swf)
swf.endpage()
swf.save(dir + "/" + "doc_temp.swf")
os.rename(dir + "/" + "doc_temp.swf",dir + "/" + "doc.swf")
Отредактировано (Янв. 24, 2011 14:20:02)
Офлайн
Посмотрите, в исходники, как вызывается ваша утилита? Возможно из subprocess не перенаправляется stdout и stderr и сообщения вываливаются в терминал в обход питона
Офлайн