如何将 python 脚本通过管道传递给命令 (boost::program::options)

how to pipe a python script to a command (boost::program::options)

我正在尝试将 python 文件的输出重定向(在 windows 中)到使用 boost::program::options 创建的命令的标准输入,如下所示:

python test.py | command.exe -s

test.py 只是打印一个文件的内容:

f = open('test.xml', 'r')
print f.read()
f.close()

如果我只执行 python 文件,它会工作,但如果我尝试将它传递给其他命令,它会失败并出现以下错误:

close failed in the file object destructor:
sys.excepthook is missin
lost sys.stderr

如果我尝试执行这个 command.exe -s < test.xml 它工作正常所以我猜是管道的问题。

有谁知道发生了什么事吗?

您收到此错误是因为当 CMD 创建管道时,它正在关闭 STDERR。 python 中文件对象的某种方法 close() 需要使用缺少的描述符。

可能的解决方案如下: https://superuser.com/questions/452763/how-to-pipleline-stderr-in-cmd-exe