我正在尝试使用subprocess.Popenshell 命令,因为它似乎在管道方面比subprocess.run
subprocess.Popen
subprocess.run
我从一些简单的例子开始,但我得到了FileNotFoundError:
FileNotFoundError:
有人告诉我,shell = True如果我将参数设为正确的列表,则无需这样做。但是,这似乎不起作用。
shell = True
以下是我的尝试:
import subprocess p1 =subprocess.Popen(['dir'], stdout =subprocess.PIPE) output = p1.communicate[0] p = subprocess.Popen([ "dir", "c:\\Users"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) outputs = p.communicate()
两者都导致FileNotFoundError
FileNotFoundError
因为只是一个被(或)dir理解的命令,那么你可以:cmd.exe``powershell.exe
dir
cmd.exe``powershell.exe
subprocess.Popen(["cmd", "/c", "dir", "c:\\Users"], stdout=subprocess.PIPE)
这相当于在 shell 中执行以下操作
C:\>cmd /c dir c:\Users
你可能会发现你必须完全路径cmd,因为c:\\Windows\\System32\\cmd.exe
cmd
c:\\Windows\\System32\\cmd.exe