regular expression usage in glob.glob for python

前端 未结 4 631
我在风中等你
我在风中等你 2020-11-27 05:38
import glob

list = glob.glob(r\'*abc*.txt\') + glob.glob(r\'*123*.txt\') + glob.glob(r\'*a1b*.txt\')

for i in list:
  print i

This code works to

4条回答
  •  独厮守ぢ
    2020-11-27 06:21

    The easiest way would be to filter the glob results yourself. Here is how to do it using a simple loop comprehension:

    import glob
    res = [f for f in glob.glob("*.txt") if "abc" in f or "123" in f or "a1b" in f]
    for f in res:
        print f
    

    You could also use a regexp and no glob:

    import os
    import re
    res = [f for f in os.listdir(path) if re.search(r'(abc|123|a1b).*\.txt$', f)]
    for f in res:
        print f
    

    (By the way, naming a variable list is a bad idea since list is a Python type...)

提交回复
热议问题