我的代码中有以下几行。我嵌入了一小行,用于获取超过 10 分钟的文件列表。我的子流程失败了,几乎没有错误。当我给出 Shell=True 时,它似乎有效,但我读到使用该选项是非常危险的,而且我对 Python 很陌生,不想搞乱我不理解的东西。我尝试过更改 find 语句中及其周围的引号,但这对我没有帮助。您能建议我如何使用 find 命令获取文件列表吗?
我已经使用这些 find 和 subprocess 组合研究了其他问题,但没有找到任何通配符目录匹配。我找不到解决方案。
cmd = 'find /myapp/uat/aws/6.3/domains/*/appnodes/*/*/log/bwappnode.log -type f -mmin +10'
apps_in_proc = subprocess.Popen(cmd,stdout=subprocess.PIPE, universal_newlines=True)
如果它适用于shell=True
,而不是没有,这意味着该模式扩展为shell=True
.
要模拟这种行为只需使用glob.glob
并像这样编写命令参数列表:
cmd = ['find'] + glob.glob('/myapp/uat/aws/6.3/domains/*/appnodes/*/*/log/bwappnode.log') + ['-type','f','-mmin','+10']
可以很容易地用纯Python编写:
import glob,os,time
current = time.time()
old_files = [x for x in glob.glob("/myapp/uat/aws/6.3/domains/*/appnodes/*/*/log/bwappnode.log") if current - os.path.getmtime(x) > 600]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)