2016-10-05 5 views
-1

をos.walk使用してサブディレクトリ内の特定のファイルを検索します。、PythonはWindowsでは

DIR NP _ ??? LAS

を、私は2つのファイルを取得:

NP_123.LASを

NP_1234.LAS

NP _ ????. LASマスクでfmatchを使用すると、NP_1234.LASではなくNP_123.LASのみが取得されます。以下は

、コード - 私のランニング:

def FindFiles(directory, pattern): 
    flist=[] 
    for root, dirs, files in os.walk(directory): 
     for filename in fnmatch.filter(files, pattern): 
      flist.append(os.path.join(root, filename)) 
    return flist 

It's可能性が1つのパターンのみを使用して、dirコマンドと同じファイルリストを取得するには、これを変更するには?

+0

モジュール[pathlib](https://docs.python.org/3/library/pathlib.html#basic-use)が役立ちます。 –

答えて

0

reを使用すると、実際の正規表現を許可することにより柔軟性を高めることができます。正規表現 "[0-9] {3,4}"は、3桁または4桁の数字と一致します。

def FindFiles(directory, pattern): 
    flist=[] 
    for root, dirs, files in os.walk(directory): 
     prog = re.compile("NP_[0-9]{3,4}.txt") 
     for filename in filter(prog.match, files): 
      flist.append(os.path.join(root, filename)) 
    return flist 
関連する問題