关于子流程模块和关键字参数shell

问题描述

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

如果我执行以下操作,

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

在这里我们知道关键字参数 shell 认情况下设置为 False ,这样'ls'不会在shell上运行。但是我的问题是如果它不能在shell上运行,在哪里运行以及如何给我输出

解决方法

我有一个Windows系统,但它应该能正常工作。

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

在Windows上-

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运行该命令。