这“如果为真,则指定命令将通过壳执行”为子模块状态的文档。这是什么意思在实践中,在Windows操作系统?

有帮助吗?

解决方案

当您执行外部程序,你想看起来像“富ARG1参数3”的命令。如果“富”是一个可执行文件,这就是会被执行并且给定的参数。

然而,往往是“富”,实际上是某种类型的脚本,或者可能被内置到shell命令,而不是在磁盘上的实际的可执行文件的情况下。在这种情况下,系统无法执行“foo”的直接原因,严格来说,这些事情是不可执行的。他们需要某种形式的“壳”的执行它们。在* nix系统中,这个壳通常(但不一定)/ bin / sh的。的窗口上它通常将cmd.exe的(或任何存储在COMSPEC环境变量)。

此参数允许您定义什么壳您想用来执行你的命令,为比较少见的情况下,当你不想要的默认。

其他提示

这意味着,该命令将利用在COMSPEC环境变量指定的程序被执行。一般cmd.exe

要准确的说,子过程调用 CreateProcess Windows API函数,传递"cmd.exe /c " + args作为lpCommandLine参数。

如果壳== False时,lpCommandLine参数给CreateProcess是简单地args

除了什么其他的答案说,如果你想在该文件类型的默认查看器中打开一个文件时,它在实践中是有用的。举例来说,如果你想打开HTML或PDF文件,但不知道哪个浏览器或浏览器安装在将运行在系统上,或者没有保证,而该可执行文件的路径,你可以简单地通过文件名作为ARGS领域唯一的参数,然后设置壳=真。这将让Windows使用任何程序与文件类型相关联。 一个警告,如果路径到您的文件中有空格,需要用两到围绕着它。”

例如

path = "C:\\Documents and Settings\\Bob\\Desktop\\New Folder\\README.txt"
subprocess.call('""' + path + '""', shell = True)
scroll top