我有python 2.7,并试图发布:
glob('{faint,bright*}/{science,calib}/chip?/')我没有获得匹配,但是从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我的表情怎么了?
发布于 2014-04-11 00:47:28
由于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)发布于 2016-07-20 16:27:20
将球状和支撑展开相结合。
pip install braceexpand示例:
from glob import glob
from braceexpand import braceexpand
def braced_glob(path):
l = []
for x in braceexpand(path):
l.extend(glob(x))
return l>>> braced_glob('/usr/bin/{x,z}*k')
['/usr/bin/xclock', '/usr/bin/zipcloak']发布于 2014-04-10 19:03:22
{..}被称为支撑展开,它是在球化发生之前应用的一个单独的步骤。
它不是globs的一部分,也不受python函数的支持。
https://stackoverflow.com/questions/22996645
复制相似问题