【问题标题】:Calling subprocess.call(...) yields in error "[WinError 2] System can't find the specified file"调用 subprocess.call(...) 产生错误“[WinError 2] System can't find the specified file”
【发布时间】:2018-08-07 10:13:33
【问题描述】:

亲爱的受过良好教育的程序员,你好,

我正在尝试使用 Python 在 cmd 提示符下执行命令。我的研究表明,subprocess 模块应该可以满足我的需求。

但是,即使是使用最基本的测试用例,Python 也总是显示错误“[WinError 2] 系统找不到指定的文件”。我已经检查过, subprocess.py 是它应该在的位置,并且导入没有问题。 StackOverflow 上还有很多其他问题,但我读到的所有问题都是关于实际丢失的特定文件或设置正确路径的问题等。

但就我而言,即使在测试以下内容时也会出现此错误:

import subprocess
subprocess.call("dir")

任何提示或提示我会做错什么?我尝试以管理员身份打开 cmd 提示符,但仍然没有运气。

提前致谢!

【问题讨论】:

  • "dir" 是一个 shell (cmd.exe) 内置命令。尝试将shell=True 作为参数添加到subprocess.call
  • @AndyBrown 谢谢!最初我从 Anaconda Navigator 的 Spyder 中的 python 控制台尝试了这个,shell=True 在那里没有什么不同,所以当我在 CMD 提示符下尝试这个时,不知何故我完全放弃了这个参数..

标签: python cmd subprocess


【解决方案1】:

我刚刚在 Windows 10 命令提示符下尝试了以下操作

>>> import subprocess
>>> subprocess.call("dir", shell=True)

工作正常。您使用的是什么操作系统/Python 版本?

【讨论】:

  • 你说得对,@AndyBrown 建议我在他的评论中也使用shell=True。 @mikeg 现在这行得通!我的问题是我来自 MATLAB,因此我很容易使用任何 IDE 的集成命令窗口,所以我将所有这些输入到 Spyder 的 IPython 控制台中。在 CMD shell 中尝试它时,我很生气,因为没有任何效果,所以我完全放弃了 shell=True,它实际上应该被使用.. 仍然努力让我的头脑脱离 MATLAB 的“编程方式” "
  • os.listdir() 怎么样。它将在更多的机器上运行,而不仅仅是 Windows。 docs.python.org/3/library/os.html?highlight=listdir#os.listdir
猜你喜欢
  • 2011-12-30
  • 2020-01-24
  • 1970-01-01
  • 2022-01-24
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多