我正在尝试将printf函数的输出重定向到Windows上的文件.我正在使用python3的ctypes来调用函数.我的代码是:
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")
Run Code Online (Sandbox Code Playgroud)
但是当我从Eclipse运行代码时,我在屏幕上得到以下内容:
begin
end
Printf function 1
Printf function 2
Printf function 3
Run Code Online (Sandbox Code Playgroud)
...以及TEST.txt中的以下内容
python print
Run Code Online (Sandbox Code Playgroud)
当我从cmd运行它时,这就是屏幕上的内容:
begin
end
Run Code Online (Sandbox Code Playgroud)
..这是在TEST.txt中:
python print
Run Code Online (Sandbox Code Playgroud)
当我评论出第二个dup2()陈述时,例如
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") …Run Code Online (Sandbox Code Playgroud)