我有我的剧本的部分,这将创建一个文件列表,通过扫描的关键词中..列表修改
的问题是,日志文件统称周围11GB。当我在shell中使用grep
来搜索它们时,大约需要4到5分钟。当我用我的python脚本执行它时,它只是将服务器挂起到需要重新启动的地步。
这似乎不正确,它会导致整个服务器崩溃,但实际上我不需要它滚动浏览所有文件,只是在上周内修改的文件。
我有了这个迄今:
logs = [log for log in glob('/var/opt/cray/log/p0-current/*') if not os.path.isdir(log)]
我想我需要添加在此之前,一些最初过滤掉错误的文件吗?
我一直在玩os.path.getmtime
格式为:
logs = [log for log in glob('/var/opt/cray/log/p0-current/*') if not os.path.isdir(log)]
for log in logs:
mtime = os.path.getmtime(log)
if mtime < "604800":
do-stuff (create a new list? Or update logs?)
这就是那种我现在在哪里,它不工作,但我希望能有更多的东西优雅,我可以用做列表内联?
如果你想优雅的使用'男人find'。否则,请尝试创建[最小,完整和可验证](http://stackoverflow.com/help/mcve)示例。这使我们更容易帮助你。 –
不确定你的意思,我不知道'find()'是Python中的一件事。我在学。我认为我对我的要求的解释是最小的,完整的和可验证的。希望添加进一步的修剪到建立我的列表的条件。所以目前'log'列表包含了大量的文件名,但是我想把它修改为修改时间少于604800秒(1周)的文件,我把它放在几秒钟内,因为当我使用' os.path.getmtime(log)'然后打印结果,我得到一些巨大的数字。我查找了'os.path.getmtime()',发现结果以秒为单位 – jonnybinthemix
@StephenRauch - 我可以使用类似于常规shell的东西吗? 'find/path/to/logs -type f -mtime -7' - 这会更干净。在2周内我一直在学习Python ..所有事情似乎都比普通的shell脚本长得多。我相信这是我的缺乏理解,但我现在努力寻找Python比Bash的好处。 – jonnybinthemix