子进程在Python中不起作用

子进程在Python中不起作用,python,subprocess,Python,Subprocess,我之所以使用Python2.6,是因为我无法避免的原因。我在空闲的命令行上运行了下面的一小段代码,但遇到了一个我不理解的错误。我怎样才能避开这件事 >>> import subprocess >>> x = subprocess.call(["dir"]) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> x = subpr

我之所以使用Python2.6,是因为我无法避免的原因。我在空闲的命令行上运行了下面的一小段代码,但遇到了一个我不理解的错误。我怎样才能避开这件事

>>> import subprocess
>>> x = subprocess.call(["dir"])

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    x = subprocess.call(["dir"])
  File "C:\Python26\lib\subprocess.py", line 444, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python26\lib\subprocess.py", line 595, in __init__
    errread, errwrite)
  File "C:\Python26\lib\subprocess.py", line 821, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
>>> 
导入子流程 >>>x=子进程调用([“dir”]) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 x=子进程调用([“dir”]) 调用中第444行的文件“C:\Python26\lib\subprocess.py” 返回Popen(*popenargs,**kwargs)。等待() 文件“C:\Python26\lib\subprocess.py”,第595行,在_init中__ 错误读取,错误写入) 文件“C:\Python26\lib\subprocess.py”,第821行,在\u execute\u子进程中 startupinfo) WindowsError:[错误2]系统找不到指定的文件 >>>
尝试设置
shell=True

subprocess.call(["dir"], shell=True)
dir
是一个shell程序,意味着没有可调用的可执行文件。因此只能从shell调用
dir
,因此
shell=True

请注意,它将只执行命令,而不向您提供其输出。它将只返回其退出状态(成功时通常为0)

如果要获得输出,可以使用:



为了解释它在Unix上工作的原因,
dir
实际上是一个可执行文件,通常位于
/bin/dir
,因此可以从路径访问。在Windows中,
dir
是PowerShell中命令解释器
cmd.exe
Get ChildItem
cmdlet(别名为
dir
)的一项功能。

直接在Windows命令提示符下键入
dir
命令时,该命令是否有效?(它应该)在python2、7和3.3上对我都有效。它必须是系统设置issueYep,dir工作,并且它在os中也工作。popenI也尝试了最新的python,并得到了相同的错误。如果您知道我的设置有什么问题,请告诉我。@FooBarUser请参阅我答案的最后一段,了解为什么它可以在Linux上工作。
>>> subprocess.check_output(['dir'], shell=True)
' Datentr\x84ger in Laufwerk C: ist … and more German output'