我有许多可执行文件,我正在使用python脚本运行。程序全部使用fprintf打印到输出文件,以及写入控制台。有没有办法在写入文件时拦截输出?
无论我使用Popen还是check_output,程序都不会创建文件,但是它们写入文件的值不会显示在stdout中。输出似乎只是消失了,我只得到他们写入控制台的数据。
似乎没有其他人有这个问题,或者没有人需要从子进程中捕获文件输出而且我有点疯狂试图找出它。
如果有帮助,这是我用来调用每个exe的代码。 x是文件路径,qx是我导入的check_output为。
try:
output = qx(x, stderr=STDOUT)
outputFile.write('\t\t' + output + '\n')
except CalledProcessError as ex:
outputFile.write('\t\t' + str(ex.output) + '\n')
outputFile.write('\t Program exited with code: ' + str(ex.returncode) + '\n')
编辑:实际上,事实证明输出文件并不是简单地消失在冷空隙中。我的错。还有,有没有办法从子进程中捕获文件输出?