【问题标题】:Regarding the subprocess module and the keyword argument shell关于子进程模块和关键字参数shell
【发布时间】:2021-01-24 10:41:56
【问题描述】:

我是 Python 初学者,请您帮我理解以下概念。

如果我执行以下操作,

import subprocess
subprocess.run(['ls'])

这里我们知道关键字参数 shell 默认设置为 False,因此 'ls' 不会在 shell 上运行。但我的问题是如果它不在 shell 上运行,它在哪里运行以及它如何给我一个输出?

【问题讨论】:

    标签: python python-3.x python-2.7 subprocess popen


    【解决方案1】:

    我有一个 Windows 系统,但它应该可以工作。

    要获取子进程的输出,您可以使用 check_output。

    在窗户上 -

    import subprocess
    subprocess.check_output(["dir"], shell=True)
    

    在没有 shell=True 的情况下运行此代码将导致错误。

    如果我想用 shell=False 运行上面的代码 我会做这样的事情-

    subprocess.check_output(["cmd","/c","dir"], shell=False)
    

    通知-

    在 shell=True 的 Unix 上,shell 默认为 /bin/sh。

    这意味着当你传递命令并使用 shell=True 它将使用 /bin/sh 来运行该命令。

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 1970-01-01
      • 2015-01-13
      • 2016-12-20
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 2021-12-27
      • 2023-02-06
      相关资源
      最近更新 更多