21

すべてパターン YYYYMMDDHHMMSS (タイムスタンプ) にあるサブフォルダーを含むフォルダーがあります。

glob を使用して、そのパターンに一致するフォルダーのみを選択したいと考えています。

4

1 に答える 1

31

は正規表現をサポートしていないためglob、一致文字列を総当たりで作成する必要があります。1 つの方法は、文字範囲[]が拡張されているという事実を利用することです。

C:\temp\py>mkdir 12345678901234

C:\temp\py>C:\Python26\python.exe
Python 2.6.2 Stackless 3.1b3 060516 (release26-maint, Apr 14 2009, 21:19:36) [M
C v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import glob
>>> glob.glob('./' + ('[0-9]' * 14))
['.\\12345678901234']
>>>

Python では、文字列に整数nを掛けると、その文字列がn回繰り返されるという事実を利用しました。

もちろん、指定されたパスが実際にディレクトリであることを確認するためにチェックを入れたいと思うかもしれません:

>>> [path for path in glob.iglob('./' + ('[0-9]' * 14))]
['.\\11223344556677', '.\\12345678901234']
>>> [path for path in glob.iglob('./' + ('[0-9]' * 14)) if os.path.isdir(path)]
['.\\12345678901234']
于 2010-04-22T16:43:13.813 に答える