pathlib.Path模块下的glob、rglob,glob模块下的glob、iglob

本文详细探讨了Python中的pathlib模块与glob模块在遍历文件系统时的区别,包括glob()、iglob()、rglob()等方法的使用。通过实例展示了它们在查找当前目录及其子目录中文件和文件夹的能力,以及返回结果的类型和差异。重点对比了generator和列表形式的返回值在处理大量文件时的效率和内存占用。
摘要由CSDN通过智能技术生成

1、导入所需模块

from pathlib2 import Path
import glob2 as gb

2、当前所在路径

# D:\02周报
p = Path.cwd()

3、比较Path模块中的glob(*)、glob(**)、rglob(*)、rglob(**)

# from pathlib2 import Path

# D:\02周报
# p = Path.cwd()

type(p.glob(r"*"))
print("Path模块下的 glob(*):")
# 返回:当前目录中的所有文件和文件夹
for i in p.glob(r"*"):
    i
    
print(f"\nPath模块下的 glob(**):")
# 返回:当前目录,及其下所有子目录中的 所有文件夹
for i in p.glob(r"**"):
    i


print("-"*80)


print(f"\nPath模块下的 rglob(*):")
# 返回:当前目录,及所有子目录中的 所有文件和文件夹
for i in p.rglob("*"):
    i
    
print(f"\nPath模块下的 rglob(**):")
# 返回:当前目录,及其下所有子目录中的 所有文件夹
# 相当于 glob(**)
for i in p.rglob("**"):
    i    

4、比较glob模块中的glob(*)、glob(**)、iglob(*)、iglob(**)

# import glob2 as gb

# 1、gb.glob("*") 与 gb.iglob("*")
print("glob模块下的 glob(*):")
gb.glob("*")  # 返回:当前目录下的所有文件、文件夹;列表

print("\nglob模块下的 iglob(*):")
gb.iglob("*")  # 返回:当前目录下的所有文件、文件夹;map
for i in gb.iglob("*"):
    i


print("-"*80)

# 2、gb.glob("**") 与 gb.iglob("**")
print("\nglob模块下的 glob(**):")
gb.glob("**")    # 返回:当前目录、及子目录下的所有文件、文件夹;列表
       
print("\nglob模块下的 iglob(**):")
print(f'gb.iglob("**")的返回值类型:{type(gb.iglob("**"))}')
gb.iglob("**")  # 返回:当前目录、及子目录下的所有文件、文件夹;map
      
cnt = 0
for i in gb.iglob("**"):
    cnt += 1
    i     

      
print(f'gb.glob("**") 的结果长度:{len(gb.glob("**"))}')
print(f'gb.iglob("**") 的结果长度:{cnt}') 

总结:

1、Path模块,返回的是 generator

      glob模块,返回的是 文件/文件夹名

     

2、1) glob.glob(*) = glob.iglob(*):返回当前目录下的文件和文件夹

      2) glob.glob(**) = glob.iglob(**):返回当前目录、及子目录下的文件和文件夹

      3) Path.glob(**) = Path.rglob(**) :返回当前目录、及子目录下的文件夹

      4) Path.glob(*):返回当前目录下的文件和文件夹

      5)  Path.rglob(*):返回当前目录、及子目录下的文件和文件夹

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值