Subprocess.run无法在文件名包含空格的Windows上运行



我在Windows 10 中使用Powershell

>>> import os, subprocess
>>> os.listdir('C:\Program Files') # works
>>> subprocess.run('ls C:\') # works
>>> subprocess.run('ls C:\Program Files') # Fails

我尝试过使用斜杠、转义、'r'来生成正则表达式,字符串用引号括起来,但似乎什么都不起作用。

通过将命令作为单个字符串传递,您将把它留给Python来将命令分解为参数。您可以引用包含空格的参数,如@Kraigolas所示,也可以自己简单地分解命令并传递命令及其参数的列表。我喜欢这种方法,因为它很容易与变量一起使用,而不用担心必须引用它们。

subprocess.run(["ls", r"C:Program Files"])

这在终端中也不起作用。您应该在子流程命令中引用文件路径:

subprocess.run('ls "C:\Program Files"')

然后,这些引文中的所有内容都被解读为一个术语。

最新更新