我有我的劇本的部分,這將創建一個文件列表,通過掃描的關鍵詞中..列表修改
的問題是,日誌文件統稱周圍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