在python中调用fc-list时出现“没有这样的文件或目录”错误

时间:2015-07-27 19:31:39

标签: python terminal subprocess

我正在尝试抓一个安装在curent托管服务器上的字体列表的终端窗口。我写了以下代码:

 import subprocess
 cmd = 'fc-list'
 output = subprocess.Popen(cmd, stdout=subprocess.PIPE ).communicate()[0]

但是当我调用此代码时,会引发异常:

  

[Errno 2]没有这样的文件或目录

我可以打开终端窗口,这很好用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要提供可执行文件的绝对路径。当你打开一个终端窗口时,你运行了一个shell,它将在$ PATH中搜索以找到该程序。直接运行程序时,通过子进程,您没有shell来搜索$ PATH。 (注意:可以告诉子进程你确实想要一个shell,但这通常会导致安全漏洞)

以下是您想要使用的内容:

 import subprocess
 cmd = '/usr/local/bin/fc-list'
 output = subprocess.Popen(cmd, stdout=subprocess.PIPE ).communicate()[0]