python - 关于子进程模块和关键字参数shell
问题描述
我是 Python 的初学者,您能帮我理解以下概念吗?
如果我执行以下操作,
import subprocess
subprocess.run(['ls'])
在这里,我们知道关键字参数shell默认设置为False,因此“ls”不会在 shell 上运行。但我的问题是,如果它不在 shell 上运行,它在哪里运行,它如何给我一个输出?
解决方案
我有一个 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 来运行该命令。
推荐阅读
- python - 如何将列表中的元素合并到 Python 3 中的另一个列表中?
- java - 为什么今天有人会使用 Java 命令行选项 -Xrs?
- css - CSS伪元素的动画不起作用
- .htaccess - 如何重定向网址
- ruby-on-rails-5 - 如何使用自定义版本表而不是版本表?
- spring-boot - 故障转移附加程序不适用于 log4j2 版本 2.7
- android - Pjsip 2.7 为目标“../bin/pjmedia-test-arm-unknown-linux-androideabi”的配方构建目标 arm64-v8a 错误失败
- database - 为什么我们连接数据库时必须选择数据库?
- gantt-chart - 如何打印 AnyGantt 中的所有任务
- reporting-services - NaN 错误报告生成器 3.0