我正在使用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()上的多个堆栈溢出问题,并试图查看我的问题是否重复。如果我错过了什么,请告诉我。
答案 0 :(得分:0)
正如@ Ry-♦所说,glob
是您要查找的模块。运行glob.glob("home/*acis*")
将为您提供与模式匹配的文件和目录的列表。要进行递归匹配,例如,如果您想查找诸如home/flux_acis_folder/something_else.dat
之类的文件,则可以使用glob.glob("home/*acis**", recursive=True)
。