..一覧
問題があり、ログファイルを一括して11ギガバイトの周りにあります。シェルで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?)
私は今の私どこのようなものだし、それは動作しませんが、私は私が行うことができ、よりエレガントなものがあった期待していましたリストインライン?
「man find」を使いたい場合は、それ以外の場合、[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を作成してみてください。そうすれば、私たちがあなたを助けやすくなります。 –
Pythonでは 'find()'が何かを知りませんでした。勉強中です。私は自分の要件についての私の説明が最小、完全、そして検証可能であると思った。私のリストを構築する条件にさらにトリミングを加えることを望む。だから、現在のリスト 'logs'には膨大な数のファイル名が含まれていますが、604800秒(1週間)未満の修正された時間を持つファイルを整理したいのですが、 os.path.getmtime(log) 'を実行して結果を表示すると、大きな数字が得られます。私は 'os.path.getmtime()'を検索し、結果が秒単位であることを発見しました – jonnybinthemix
@StephenRauch - 通常のシェルと同様のものを使用できますか? 'find/path/to/logs -type f -mtime -7' - これははるかにクリーンです。 2週間で私はPythonを学んできました。すべては普通のシェルスクリプトよりずっと長いです。私はそれが私の理解の欠如であると確信していますが、私は現在、Bashに比べてPythonの利点を見つけるのに苦労しています。 – jonnybinthemix