使用subprocess模块的时候出问题?

版本为最新的3.5.0
输入的是文档中的示例代码,非但没有得到想要的结果,还出现了如下错误

>>> subprocess.run(["ls", "-l"])  # doesn't capture output
CompletedProcess(args=['ls', '-l'], returncode=0)

>>> subprocess.run("exit 1", shell=True, check=True)
Traceback (most recent call last):
  ...
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1

>>> subprocess.run(["ls", "-l", "/dev/null"], stdout=subprocess.PIPE)
CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n')

结果应该如上所示。代码在文档17.5. subprocess — Subprocess management中。
我输入以后得到的结果如下:

>>> import subprocess
>>> subprocess.run(["ls", "-1"])
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    subprocess.run(["ls", "-1"])
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 696, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 950, in __init__
    restore_signals, start_new_session)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 1220, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。

环境为自带的IDLE,请问这是怎么回事?

阅读 16.2k
1 个回答

大概是因为win下面没有 ls 这个程序吧……

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题