繁体   English   中英

Windows上的Python Popen,close_fds和重定向输入/输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM