2015-10-23 7 views

ответ

1

Вы можете временно перенаправить sys.stdout строку в Python 3.4.

contextlib.redirect_stdout (NEW_TARGET)

Контекст менеджер для временного перенаправления sys.stdout в другой файл или файл-подобный объект.

Этот инструмент добавляет гибкость существующим функциям или классам, выход связан с выводом на стандартный вывод.

Например, вывод справки() обычно отправляется на sys.stdout. Вы можете захватить этот вывод в строку перенаправив вывод на объект io.StringIO:

f = io.StringIO() 
with redirect_stdout(f): 
    help(pow) 
s = f.getvalue() 

https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout

1

Вместо перенаправлять sys.stdout переменной, это легче заменить sys.stdout непосредственно:

text_stream = io.StringIO() 
cur.copy_expert("COPY test TO STDOUT WITH CSV HEADER", text_stream) 
var1 = text_stream.getvalue() 

Это работает, потому что io.StringIO возвращает file object , который copy_expert ожидает второго аргумента.

Смежные вопросы