2016-07-16 22 views
0

globのmanページを見ていますが、一致するパターンをPythonで動作させることはできません。私は、この今のところ...Pythonのglobの一致パターン

glob.glob('file.*') + glob.glob('file[0-9].*') 

を持っており、これは動作し、私に私はそれが動作しませんfile100.txtを作る場合は9を超えないoをファイル番号と同じくらい長いリストを返し、私がしようとした場合[0-100]または[0-1000]の範囲では何も変更されません。

私の質問はどのようにこの番号を任意の番号に一致させることができますか...また、それは一度のステートメントでなければならないようです。

答えて

3

私は確信しています。globはあなたが必要とするものを十分に表現できないので、必要以上にフェッチしてからフィルタリングすることをお勧めします。例えば。 (未検査)

import re 

file_names = [name for name in glob.glob('file*.*') if re.match(r'^file\d*\.', name] 
2

通常のグロビングでは、この種のものは処理されません。特定のパターンの繰り返しを指定することはできません。あなたは一回の呼び出しでそれを行うことはできません。最良の方法はfile*.txtを使用して、結果リストを後処理して、たとえばreモジュールの正規表現関数を使用してパターンに一致しないものを排除することです。

関連する問題