1
不通过大括号作为参数在Windows命令行,以下行为完全如预期:Python的子进程在Windows
C:\> c:\cygwin\bin\printf "<%s>\n" "{foo}"
{foo}
从本机Win32 Python实例中,然而,大括号被剥离:
>>> subprocess.Popen(['c:\\cygwin\\bin\\printf', '<%s>\n', '{foo}'],
... stdout=subprocess.PIPE).communicate()[0].rstrip('\n')
'foo'
这是怎么回事?
该文档链接到您有一个大粉红色“自2.7版弃用”框。这就是说,我不确定你在2.7中使用的是什么(或者在3.0-3.2中,它既没有这个也没有'shlex.quote')... – abarnert
这确实有效。也就是说,我对它的工作非常不安 - 'shell = False'使用子进程.Popen毕竟应该避免任何非文字处理参数字符。 –
是的,其相当粗略... –