2011-11-17 6 views
2

私はpythonを使用して文字列を含む最後に変更されたファイルを探したいと思います。私のディレクトリには多くのファイルがあるので、日付を比較することは魅力的ではありません。私は、私が望む文字列を含むファイルにヒットするまで、変更されたデータでファイルを検索する方法を探しています。または、これを行うためのより良い方法があれば、それは素晴らしいことになります。特定の文字列を含む最後に変更されたファイルを読み取るにはどうすればよいですか?

+1

私はあなたの要件を理解していません。日付を比較しない場合は、最新の修正ファイルをどのように見つけるつもりですか? 「多くの」ファイルはいくつありますか? –

+0

日付を比較するのではなく、すべてのファイルの内容を比較したいのですか?それは効率の改善のようには聞こえません。 – JAL

答えて

4

文字列search_stringが含まれている現在のディレクトリに最後に変更されたファイルを検索するには、このコードを使用することができます:

files = os.listdir(".") 
files.sort(key=os.path.getmtime, reverse=True) 
for name in files: 
    with open(name) as f: 
     if search_string in f.read(): 
      print name 
      break 

は、これが最初に新しいの最初に、修正時間によってそれらを並べ替える、すべてのファイルが一覧表示されます次に、ファイルのリストを反復して、search_stringが含まれているかどうかを確認します。

+1

なぜソートされた名前のために 'を使用しないのですか(os.listdir( '。')、key = os.path.getmtime、reverse = True):'?これはまだ読みやすく、2行短くなっています。 – rubik

+1

あなたは3つのことをやっている - ファイルのリストを取得し、mtimeを下降させてソートし、それらを反復する。 3つのステートメントで3つのステートメントを1つにするよりも読みやすいです。 – AdamKG