Python 为什么Popen(“cmd.exe echo a”,shell=True)没有运行;回声;?

Python 为什么Popen(“cmd.exe echo a”,shell=True)没有运行;回声;?,python,python-3.x,Python,Python 3.x,这导致了我在使用Popen()时遇到的一个更大的问题 以下内容与我认为的不符: x = subprocess.Popen("cmd.exe echo a", stdout=PIPE, shell=True) print (x.stdout.read()) 返回cmd控制台的“title”消息,但从不执行echo a 同: x = subprocess.Popen(["cmd.exe", "echo a"], stdout=PIPE) print (x.stdout.read()) 及 最终结

这导致了我在使用
Popen()
时遇到的一个更大的问题

以下内容与我认为的不符:

x = subprocess.Popen("cmd.exe echo a", stdout=PIPE, shell=True)
print (x.stdout.read())
返回cmd控制台的“title”消息,但从不执行
echo a

同:

x = subprocess.Popen(["cmd.exe", "echo a"], stdout=PIPE)
print (x.stdout.read())


最终结果是在open cmd terminal中打印标准的“Microsoft Windows版本…”和CLI位置
C:\Python36>
cmd.exe
需要参数
/C
在传递执行的脚本之前:

x = subprocess.Popen(["cmd.exe", "/c", "echo a"], stdout=PIPE)
print (x.stdout.read())

cmd.exe
需要参数
/c
在传递执行的脚本之前:

x = subprocess.Popen(["cmd.exe", "/c", "echo a"], stdout=PIPE)
print (x.stdout.read())

当您指定
shell=True
时,命令处理器
cmd.exe
是隐式的

>>> x = subprocess.Popen("echo a", stdout=subprocess.PIPE, shell=True)
>>> print (x.stdout.read())
a

通过显式调用它,您可以启动一个嵌套的命令控制台,就像您在提示符下键入了
cmd.exe
。它的输出不会进入
Popen()
的管道。

当您指定
shell=True
时,命令处理器
cmd.exe
是隐式的

>>> x = subprocess.Popen("echo a", stdout=subprocess.PIPE, shell=True)
>>> print (x.stdout.read())
a

通过显式调用它,您可以启动一个嵌套的命令控制台,就像您在提示符下键入了
cmd.exe
。它的输出不会进入
Popen()
的管道。

现在,如果我想要
C:\Users\Me>C:\path\to\app.exe arg1 arg2
stdout
,该怎么办?如果我打开一个cmd控制台并提供.exe路径和args,输出将生成到
stdout
,但我似乎无法在OP中的链接中用
子进程作为大纲进行复制。现在,如果我想要
stdout
的话,比如说
C:\Users\Me>C:\path\to\app.exe arg1 arg2
?如果我打开一个cmd控制台并提供.exe路径和args,输出将生成到
stdout
,但我似乎无法将
子流程作为OP中我链接中的大纲进行复制。