-1

それぞれが GDS_XYZ/GDS_XYZ.summary.txt という名前のファイルを含む複数のディレクトリをグロブしたいと考えています。XYZはフォルダごとに変わるので、そうします

glob.glob('GDS_*/GDS*.summary.txt')

ただし、結果は['GDS_0744-2358/GDS*.summary.txt']代わりに['GDS_0744-2358/GDS_0744-2358.summary.txt']

その理由と、それに対して私にできることを誰か教えてもらえますか? 私が見る限り、グロブは複数のワイルドカードを取ります...ありがとう!

4

3 に答える 3

1

他のソリューションをテーブルに持ち込むと、人々は私を嫌います。ただし、次のことを考慮してください。

import os
for root, folders, files in os.walk('./'):
    if os.path.basename(root)[:4] == 'GDS_':
        print('Checking: ' + root)
        for f_name in files:
              if f_name[:3] == 'GDS':
                  print('\t' + f_name)

下のフォルダー構造を再帰的にチェックし、./それが立っているフォルダーに名前が付いGDS_*ているかどうかを確認し、そうであれば、その中のすべてのファイルをチェックしますGDS*。次に、次のフォルダーなどをトラバースします。

于 2013-05-06T14:27:28.633 に答える
0

Formicを使用できます(開示:私は著者です)。Formic は、1 つ (または複数) のディレクトリを含む glob に対して期待することを正確に実行します。

import formic
fileset = formic.FileSet(include="GDS_*/GDS*.summary.txt")

for file_name in fileset:
    # Do something with file_name

デフォルトでは、Formic は現在の作業ディレクトリから検索を開始します。名前付き引数を使用して、別のdirectory場所から開始することもできます。

fileset = formic.FileSet(include="GDS_*/GDS*.summary.txt", directory="/some/where/else")

これがうまくいくことを願っています

于 2013-05-08T04:10:37.957 に答える