[英]Python Popen on Windows, close_fds and redirecting input / output
我试图通过Popen从主Python程序运行特定于供应商的旧版本Python(SunGard Arena Python)并与之交互,因为我需要通过Python的供应商版本访问数据库。
我可以通过外壳运行供应商Python
'import site' failed; use -v for traceback.
现在,当我尝试通过Popen运行它时,如果执行标准操作:
proc = Popen('U:arena_python.exe',bufsize=-1,stdin=PIPE, stdout=PIPE, stderr=STDOUT)
它根本不起作用,当我执行proc.communicate()时,我得到:
('An exception has occurred -- see the traceback log in "acm_.log".\nCreated a minidump in ".\\arena_python-20160216-092027-942.dmp".\n\'import site\' failed; use -v for traceback\n', None)
日志在C:\\ windows \\ SysWOW64 \\ ntdll.dll中提到访问冲突。 奇怪的是,如果我运行上述命令并将脚本作为命令行参数包含在内,则脚本可以在进程再次崩溃之前运行良好。 试玩一下,如果我使用close_fds = True运行它,似乎效果更好:
Popen('U:arena_python.exe',bufsize=-1,close_fds=True)
但是然后我不知道如何与该流程进行交互-文档说在Windows上,您不能使用close_fds = True并重定向输入/输出。
知道发生了什么吗? 我如何与流程互动? 谢谢,
我知道这是一个旧帖子,但是为了记录,这是我的解决方案:
我也有这个问题。 我发现了一个棘手的解决方法,已发布在以下问答中: Howto:close_fds = True的解决方法并在Windows上重定向stdout / stderr
祝你有美好的一天。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.