如何用Pathlib实现文件名特定字符检查(如句点前缀过滤)
使用Pathlib实现跳过Mac隐藏文件并筛选特定后缀文件
方法1:直接判断文件名前缀
Pathlib的Path对象通过.name属性可以获取完整文件名(包含后缀),直接用字符串的startswith(".")就能跳过以句点开头的隐藏文件,逻辑和你之前用os的写法几乎一致,同时用rglob替代os.walk来递归筛选指定后缀的文件,代码更简洁:
from pathlib import Path target_dir = Path("你的目标目录路径") target_ext = ".txt" # 替换为你需要的文件后缀 # 递归遍历所有后缀为target_ext的文件 for file_path in target_dir.rglob(f"*{target_ext}"): # 跳过以句点开头的隐藏文件(比如.DS_Store、._xxx) if file_path.name.startswith("."): continue # 这里执行你对文件的操作 print(f"处理文件:{file_path}")
方法2:用内置隐藏文件判断(Python 3.12+)
如果你的Python版本是3.12及以上,Pathlib新增了.is_hidden()方法,能直接识别系统级的隐藏文件(不仅限于Mac的句点前缀文件,也支持Windows的隐藏属性),代码更通用:
from pathlib import Path target_dir = Path("你的目标目录路径") target_ext = ".txt" for file_path in target_dir.rglob(f"*{target_ext}"): if file_path.is_hidden(): continue # 执行你的文件操作 print(f"处理文件:{file_path}")
补充说明
你误以为Pathlib没有startswith方法,是混淆了Path对象本身和它的字符串属性。Path对象的.name、.stem、.suffix都是字符串类型,所以可以直接使用所有字符串方法(比如startswith、endswith)。
如果需要像os.walk那样同时处理目录和文件,可以用Path.iterdir()配合递归实现,但rglob已经能高效完成递归筛选指定后缀文件的需求,更推荐使用。
内容的提问来源于stack exchange,提问作者jfontana
相关产品推荐
相关产品推荐

