subprocess.check_output()在python

时间:2018-12-16 00:29:17

标签: python

我正在使用subprocess.check_output()运行基本的“ ls”命令。根据我阅读文档后的了解,该过程可以帮助从python域内运行shell命令。

让我们说我的示例文件夹为home /,其中有以下文件

  -rw-rw-r-- 1 aravind aravind     761 Dec  2 10:48 flux_acis_bare_479.dat
  -rw-rw-r-- 1 aravind aravind    2426 Dec  2 10:49 flux_acis_bare_481.dat
  -rw-rw-r-- 1 aravind aravind     759 Dec  2 18:46 flux_acis_hetg_479.dat
  -rw-rw-r-- 1 aravind aravind    2178 Dec  2 18:45 flux_acis_hetg_481.dat

如果我从shell进行ls搜索以搜索关键字“ acis”,自然会返回所有文件。

现在我想在python中做同样的事情。

以下是我的尝试

     import os
     import subprocess

     os.chdir("home/")
     subprocess.check_output(["ls", "*acis*"])

这两个“”,“”应按顺序运行,我应该取回所有文件,结果是我的猜测。但是我得到的输出是找不到文件错误。

     Command '['ls', '*acis*']' returned non-zero exit status 2

免责声明:我已经查看了subprocess.check_output()上的多个堆栈溢出问题,并试图查看我的问题是否重复。如果我错过了什么,请告诉我。

1 个答案:

答案 0 :(得分:0)

正如@ Ry-♦所说,glob是您要查找的模块。运行glob.glob("home/*acis*")将为您提供与模式匹配的文件和目录的列表。要进行递归匹配,例如,如果您想查找诸如home/flux_acis_folder/something_else.dat之类的文件,则可以使用glob.glob("home/*acis**", recursive=True)