我需要使用以下GNUfind
命令搜索目录的内容:
find path -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
输出:
^{pr2}$奇怪的是,CalledProcessError
对象输出属性与我在Linux shell中运行find
时得到的输出完全相同(返回的输出大约有15K行)。我也试过设置bufsize=-1,但没用。在
对理解这种行为有什么建议吗?在
我使用的是python2.7.2,find
版本是4.2.20。在
如果使用plumbum,任务将简单到:
你不必担心逃跑,我猜这是你麻烦的原因。在
尽管您发现了问题,对于您正在尝试实现的如此简单的事情,我不会使用
os.walk
来代替它:似乎在15K输出的中间,我错过了以下几行:
结果发现,我正在搜索的路径包含模拟结果,对于超过3天的文件,它会定期删除。当执行
find
时删除操作似乎是问题的根本原因。在相关问题 更多 >
编程相关推荐