我在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"')
然后,这些引文中的所有内容都被解读为一个术语。