问题描述
我是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运行该命令。