【发布时间】:2017-01-01 14:40:31
【问题描述】:
请帮我用python编写简单的控制台应用程序。它应该将所有输入重定向到系统 shell(bash 或 windows cmd 或 powershell)并将它们的所有输出提供给屏幕。 简单地说,我可以说从 python 应用程序运行终端。
下一个代码会出现一些奇怪的行为:前 3 次按下任何键后它会输出(执行?)一些先前的命令(可能来自缓存)
#!/bin/python3
import subprocess
import sys
proc = subprocess.Popen(['bash'])
while True:
buff = sys.stdin.readline()
stdoutdata, stderrdata = proc.communicate(buff)
if( stdoutdata ):
print( stdoutdata )
else:
print('n')
break
【问题讨论】:
-
我在发布问题后编写的代码。我知道没有代码的问题看起来很简单。有问题的时候我没有想法。 @grael,如果这很粗鲁,请原谅我。
-
@kyb 没关系,既然您添加了代码,我就删除了该评论:)
-
当我使用
subprocess.Popen(['cmd])从 Windows PowerShell 运行此脚本时,它可以正常工作。使用Ctrl+B运行的 Sublime Text 在 Linux 和 Windows 下显示黑死控制台。 -
与SublimeREPL 一起工作,而没有
PIPEs
标签: python python-3.x terminal subprocess