Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 子进程。Popen不';你不能运行bash命令吗?_Python_Bash_Ubuntu_Subprocess - Fatal编程技术网

Python 子进程。Popen不';你不能运行bash命令吗?

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

我曾尝试在PythonIdle的2.7和3.2版本中使用subprocess.Popen,但代码不起作用


谢谢。

我怀疑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)