[英]Can I match groups / optional groups using glob in Python?
我希望能夠使用 Python 3.9 中的glob
模塊來匹配包含以下文件名的目錄中的文件名:
具體來說,我希望能夠遍歷符合特定模式的目錄中的所有文件。 所以我想像這樣使用 for 循環:
for file in current_path.glob("string"):
# do something
glob 模式“MM05_submissions/MM05_*[a-z0-9]?(_Student[AZ]).py”似乎根據DigitalOcean 的 glob 測試工具工作,但我沒有在 Python 3.9 中找到任何匹配項
()
匹配 Python 中的可選組嗎? 您不能使用(...)
分組,不。 glob()
模塊使用fnmatch
模塊進行匹配,它支持*
, ?
, [seq]
和[!seq]
,僅此而已。
但是, fnmatch
使用簡單的模式到正則表達式的轉換來測試文件名。 自己用os.scandir()
做同樣的事情:
import re
import os
pattern = re.compile("MM05_[a-z0-9]*(_Student[A-Z])?\.py")
for entry in os.scandir("MM05_submissions"):
if pattern.fullmatch(entry.name):
# name matched the pattern
如果您需要使用目錄名稱支持任意深度模式,則必須使用os.walk()
編寫一些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.