2011-01-10 15 views
0

ありがとうございます。 私が提供するパス上のすべての.txtファイルのリストを取得するために、glob.glob関数を使用しています。 正規表現はC:\build\*.txtとして機能していますが、ルートディレクトリに対してのみ機能し、すべてのテキストファイルをc:\ build \、たとえばc:\build\files\ha.txtに配置したいと考えています。Regexですべてのテキストファイルを見つけるには?

どうすれば可能ですか? ありがとうございます。

+0

[Glob()を使用してPythonでファイルを再帰的に検索する](http://stackoverflow.com/questions/2186525/use-a-glob-to-find-files-recursively-in-python ) – marcog

答えて

5

注意をエスケープ。

あなたはos.walkを使用して、すべてのサブディレクトリからすべての.txtファイルを取得する偉業を達成する可能性があります。あなたのようなリストを与えるための方法は、このようなものが考えられます。

def get_all_txts_on_dir(path): 
    import os 
    ret = [] 
    for root, dir, files in os.walk(path): 
     for name in files: 
      if name.endswith('.txt'): 
       ret.append(name) 
    return ret 
+0

+1:私よりも速く詳細です – unholysampler

+0

非常に参考になりました、ありがとうございます。 – ldog

2

\.txt$

$アンカー文字列

\.の端にglob.globは、UNIXシェルのワイルドカードとしない正規表現オブジェクト(documentationを参照)を受け入れることがリテラル.

+0

あなたはパンチに私を打つ。 +1 – Anders

+0

-1 'glob'は正規表現をとらない。 – marcog

+0

@アンダー - 私は気付いた:) –

0

glob正規表現を使用していない、それはルールのはるかに簡単なセットを持っています。

代わりに、os.walk()を使用して、正規表現と一致するタイトルを実行することもできます。

関連する問題