Redirecionamento de stdout com ctypes

Estou tentando redirecionar a saída de funções printf para um arquivo no Windows. Estou usando ctypes com python3 para invocar as funções. Meu código é:

import os, sys
from ctypes import *

if __name__ == '__main__':

 print("begin")
 saved_stdout=os.dup(1)
 test_file=open("TEST.TXT", "w")
 os.dup2(test_file.fileno(), 1)
 test_file.close()
 print("python print")
 cdll.msvcrt.printf(b"Printf function 1\n")
 cdll.msvcrt.printf(b"Printf function 2\n")
 cdll.msvcrt.printf(b"Printf function 3\n")
 os.dup2(saved_stdout, 1)
 print("end")

Mas quando eu executo o código do Eclipse eu recebo o seguinte na tela:

begin
end
Printf function 1
Printf function 2
Printf function 3

... e o seguinte no TEST.txt

python print

Quando eu executo isso a partir do cmd, isso é o que está na tela:

begin
end

..e isso está no TEST.txt:

python print

Quando eu comento o segundodup2() declaração, por ex.

import os, sys
from ctypes import *
if __name__ == '__main__':

    print("begin")
    saved_stdout=os.dup(1)
    test_file=open("TEST.TXT", "w")
    os.dup2(test_file.fileno(), 1)
    test_file.close()
    print("python print")
    cdll.msvcrt.printf(b"Printf function 1\n")
    cdll.msvcrt.printf(b"Printf function 2\n")
    cdll.msvcrt.printf(b"Printf function 3\n")
    #os.dup2(saved_stdout, 1)
    print("end")

Do Eclipse, na tela:

begin

... e no arquivo TEST.txt:

python print
end
Printf function 1
Printf function 2
Printf function 3

De cmd, na tela:

begin

... e no arquivo TEST.txt:

python print
end

Estou totalmente confuso agora. Eu li todos os tópicos de redirecionamento aqui no StackOverflow e não consigo entender o que está acontecendo. De qualquer forma, o que eu aprendi é que as funções C acessam o stdout que é ligado diretamente ao descritor de arquivo, enquanto o python usa um objeto especial para aquele - o objeto de arquivo stdout. Então o elementarsys.stdout=*something* não funciona com ctypes. Eu até tenteios.fdopen(1) na saída dup2-ed e, em seguida, chamandoflush() depois de cadaprintf declaração, mas isso não está funcionando novamente. Estou totalmente sem idéias agora e apreciaria se alguém tivesse uma solução para isso.

questionAnswers(1)

yourAnswerToTheQuestion