我有一个脚本片段,它将创建一个文件列表来扫描关键字。。你知道吗
问题是,日志文件的总容量约为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?)
这就是我现在所处的位置,它不起作用,但我希望有一些更优雅的我可以做的列表内联?你知道吗
取决于有多少文件名和多少内存(512MB VPS?),有可能您的内存不足,创建了两个包含所有文件名的列表(一个来自
glob
,另一个来自您的列表理解)。不一定是这样,但这就是我要做的。你知道吗尝试切换到
iglob
(在引擎盖下使用os.scandir
并返回一个迭代器)并使用生成器表达式,看看是否有帮助。你知道吗另外,
getmtime
获取一个时间,而不是从现在开始的间隔。你知道吗相关问题 更多 >
编程相关推荐