在python glob中支持扩展

ast*_*ada 14 python bash shell glob expansion

我有python 2.7,我试图发出:

glob('{faint,bright*}/{science,calib}/chip?/')
Run Code Online (Sandbox Code Playgroud)

我没有获得匹配,但是从shell echo {faint,bright*}/{science,calib}/chip?给出:

faint/science/chip1 faint/science/chip2 faint/calib/chip1 faint/calib/chip2 bright1/science/chip1 bright1/science/chip2 bright1w/science/chip1 bright1w/science/chip2 bright2/science/chip1 bright2/science/chip2 bright2w/science/chip1 bright2w/science/chip2 bright1/calib/chip1 bright1/calib/chip2 bright1w/calib/chip1 bright1w/calib/chip2 bright2/calib/chip1 bright2/calib/chip2 bright2w/calib/chip1 bright2w/calib/chip2
Run Code Online (Sandbox Code Playgroud)

我的表情有什么问题?

Orw*_*ile 8

将通配符与大括号扩展相结合。

pip install braceexpand
Run Code Online (Sandbox Code Playgroud)

样本:

pip install braceexpand
Run Code Online (Sandbox Code Playgroud)

支撑_glob('/usr/bin/{x,z}*k')
['/usr/bin/xclock', '/usr/bin/zipcloak']


tha*_*guy 6

{..} 被称为支撑膨胀,并且是在发生球状体之前应用的单独步骤.

它不是globs的一部分,并且不受python glob函数的支持.


Dou*_*sDD 5

由于Python{}不支持glob(),你可能想要的是类似的东西

import os
import re

...

match_dir = re.compile('(faint|bright.*)/(science|calib)(/chip)?')
for dirpath, dirnames, filenames in os.walk("/your/top/dir")
    if match_dir.search(dirpath):
        do_whatever_with_files(dirpath, files)
        # OR
        do_whatever_with_subdirs(dirpath, dirnames)
Run Code Online (Sandbox Code Playgroud)