【问题标题】:calling external command using subprocess.call doesn't work on python 3.9.2 [duplicate]使用 subprocess.call 调用外部命令在 python 3.9.2 上不起作用 [重复]
【发布时间】:2021-03-23 15:14:11
【问题描述】:

从子流程导入调用 调用(["ls", "-l"])

返回

FileNotFoundError: [WinError 2] 系统找不到指定的文件

【问题讨论】:

  • 你在 Windows 上,为什么你期望有一个ls 命令?
  • Windows 有 dir 而不是 ls
  • 你也应该使用shell=True参数。
  • 使用os.listdir, os.walk or glob.glob 可能会做得更好。这些可以在任何操作系统上运行,并且无需调用另一个进程并解析结果。

标签: python python-3.x


【解决方案1】:

首先,您在 Windows 操作系统上使用 linux 命令,例如提到的Marco Bonelli

您应该将 ls 命令更改为 Windows 等效命令,如下所示:

subprocess.call(["dir","/Q"],shell = True)

我们指定shell=True,因为dir命令是内置在shell中的,否则你会得到同样的错误。

【讨论】:

  • 如果我将更正后的程序作为脚本运行,控制台只会自行重启。但是,如果我在 shell 上将代码作为一系列命令输入,它会按预期返回信息。为什么会这样?谢谢你的回答,我一周前真的开始使用python了,没想到这么快就有这么多答案
  • @Dustin 尝试从 cmd 以 python .\file.py 运行 .py 文件,如果您只是以 .\file.py 运行文件(取决于 assoc .py 文件)它可能会运行并打印预期的输出,但您将看不到它。您可以尝试在脚本末尾打印输入行,您将看到有输出。所以你可以尝试或者添加subprocess.call("pause", shell=True)。但是有更好的解决方案来完成这些任务,其中一些在上面的 cmets 中提到了。
猜你喜欢
  • 2020-04-03
  • 2019-07-22
  • 1970-01-01
  • 2011-11-18
  • 2016-09-30
  • 2015-03-29
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多