如何将 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
我正在尝试将 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