Python 2.7.10 Windows 7和subprocess.CREATE_NEW_控制台带波彭的旗帜标准写入();不工作

2024-03-29 13:51:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是:

  • 使用带有CREATE_NEW_CONSOLE标志的subprocess.Popen()创建一个新的python控制台。在
  • 写入其stdin并将其打印到新控制台。在

在我的Windows10笔记本电脑上,我可以让它正常工作,但是在我的Windows7桌面上,由于creationflags=CREATE_NEW_CONSOLE,这个过程失败了 我还尝试删除creationflags=CREATE_NEW_CONSOLE并在参数中添加shell=True。这没用。在

在脚本.py公司名称:

CODE="""
import sys;
while 1:
    sys.stdout.write(sys.stdin.readline());
    sys.stdout.flush();
""";
def Process():
    return Popen([sys.executable,'-c',CODE],stdin=PIPE,bufsize=1,universal_newlines=True,creationflags=CREATE_NEW_CONSOLE);
p=Process();
p.stdin.write('Hello World\n');
p.stdin.flush();
raw_input('');

当我运行这个“脚本.py,”快速打开和关闭新控制台。程序在某个时候崩溃了。原始控制台保持打开状态: raw_input('');阻止它关闭。在

我还尝试了try:except:来防止新进程崩溃,但是只创建了一个不做任何事情的空白控制台。 我做了很多研究,但我发现没有什么能解决这个问题。在

更新***我更新到Python 2.7.15,然后继续确定问题。 我发现sys.stdout.flush();抛出了一个[Errno 9]错误的文件描述符,因为系统标准输出有点腐败。 我的主要问题是“如何在subprocess.Popen()中保留stdout,这样新的控制台窗口就可以打印到它自己而不必重定向stdout

任何帮助将不胜感激!在


Tags: py脚本truenewcreatestdinstdoutsys