Python 子进程。Popen不';你不能运行bash命令吗?
我曾尝试在PythonIdle的2.7和3.2版本中使用subprocess.Popen,但代码不起作用Python 子进程。Popen不';你不能运行bash命令吗?,python,bash,ubuntu,subprocess,Python,Bash,Ubuntu,Subprocess,我曾尝试在PythonIdle的2.7和3.2版本中使用subprocess.Popen,但代码不起作用 谢谢。我怀疑IDLE会重定向Python的标准输出,以便在窗口中执行打印操作,但它不会重定向文件描述符1,以便任何子进程都能愉快地打印到该文件描述符 尝试从命令行启动IDLE,运行这些行,查看它们的输出是否打印到调用IDLE的终端 解决方案: 不要使用空闲的。从命令行调用的python解释器调用您的东西 将进程的输出重定向到管道,读取该管道并将其输出。例如: sp = subprocess
谢谢。我怀疑IDLE会重定向Python的
标准输出
,以便在窗口中执行打印
操作,但它不会重定向文件描述符1,以便任何子进程都能愉快地打印到该文件描述符
尝试从命令行启动IDLE,运行这些行,查看它们的输出是否打印到调用IDLE的终端
解决方案:
python
解释器调用您的东西sp = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for i in sp.stdout: print i
sp.wait()
您确定命令没有运行,只是在空闲终端中看不到输出吗?尝试以这种方式运行'touch/tmp/testfile',看看是否创建了/tmp/testfile;尝试添加一个等待、暂停,如果您只是想检查它是否工作……不,当shell关闭或打开时没有结果什么是
====没有子流程=====
的意思?你为什么不把显示的东西放进你的问题中,而不是窗口的屏幕截图呢?我没有键入===没有子进程===每次我使用IDLEit时它都会出现,但我如何在IDLE中使用它呢?这甚至在终端中也有效:
导入子进程
Subprocess.Popen('echo“Hello World',shell=True)解决方案2(管道和
for
循环)也应该在空闲状态下工作。此外,如果绝对必要,您只应该使用shell=True
。最好使用subprocess.Popen(['echo','Hello World'))
响应sp=subprocess.Popen(['echo','Hello World',stdout=subprocess.pipe)
。