我需要使用以下 GNUfind
命令搜索目录的内容:
查找路径-type f -name file1 -o -name file2 -o -name file3
当我在我的 Linux shell 中执行此命令时,该find
命令返回退出代码 0。当我在子进程调用中执行相同的命令时,该find
命令返回退出代码 1:
import subprocess
import shlex
findcmd = "/depot/findutils/bin/find /remote/scratch/results -type f -name 'QUEUED' -o -name 'run.pid' -o -name 'PID'"
try:
output = subprocess.check_output(shlex.split(findcmd))
except subprocess.CalledProcessError, cpe:
print cpe.output
raise cpe
输出:
Traceback (most recent call last):
File "./getaverages.py", line 63, in <module>
raise cpe
subprocess.CalledProcessError: Command '['/depot/findutils/bin/find', '/remote/scratch/results', '-type', 'f', '-name', 'QUEUED', '-o', '-name', 'run.pid', '-o', '-name', 'PID']' returned non-zero exit status 1
奇怪的是,CalledProcessError
对象输出属性与我在 Linux shell 中运行时得到的输出完全相同find
(返回的输出大约有 15K 行)。我也尝试设置bufsize=-1但这没有帮助。
有什么建议可以理解这种行为吗?
我使用的是 Python 2.7.2,find
版本是 4.2.20。