代码之家  ›  专栏  ›  技术社区  ›  Teknophilia

带括号和逗号的Python fnmatch

  •  -1
  • Teknophilia  · 技术社区  · 6 年前

    我在一个目录中遍历,并试图收集包含字符串的文件 (0, 0, 0) 使用 fnmatch.fnmatch(filename,'*(0, 0, 0)*') . 它看起来像是括号和逗号正在丢弃它,并与字符串匹配,如 (0, 1, 1)

    相关片段是:

    for root, dirs, files in os.walk(data_dir):
        for file in files:
            filename = os.path.join(root, file)
            if fnmatch.fnmatch(filename,'*\(0, 0, 0\)*'):
                # do stuff
    

    dirs包含如下文件:

    \c_(0, 0, 0)\data.txt
    \c_(0, 05, 05)\data.txt
    \c_(0, 05, 1)\data.txt
    \c_(0, 1, 0)\data.txt
    

    我的理解是,摆脱括号应该能解决这个问题,但没有运气。最好的解决办法是什么?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Ori Arbes    6 年前
    files_list=[]
    
    for filename in os.listdir(r'DirPath'):
        if filename.count('(0, 0, 0)'):
            files_list.append(filename)
    
        2
  •  0
  •   Asav Patel    6 年前

    你还需要逃离空间。

    试试这个: *\(0,\ 0,\ 0\)*