python 文件路径_「按需学Python」 1. Glob库遍历路径/文件

小前言:

本人Python小白,因为最近想整理下近10几年的老照片,然后就有了写脚本批处理的想法。初始需求其实很简单,就是筛选自己想要的照片到指定文件夹,然后按照exif信息重命名照片为拍摄时间_拍摄设备.jpg,比如20180101_122334_E-M10.jpg代表的是2018年01月01日12点23分34秒用E-M10拍的照片。

这个算不上教程,不会全面地介绍某个库,只是我在折腾过程中的小摘要小想法,
如有错误请指出,如有疑问当然也欢迎留言相互讨论。


Glob库

这里从Glob库出发,遍历指定文件夹中jpg文件。Python官方文献:https://docs.python.org/3/library/glob.html

以py文件同目录下sample文件夹为例:
sample下有子文件夹sampleBackup, 3个jpg文件和1个txt文件;
sampleBackup含有2个jpg文件,如下图

ce6bbcc50697f00e62e5bdf09ec957d9.png

sample文件夹结构

glob

glob.glob(pathname, *, recursive=False)

最简单的glob使用方法,遍历.sample路径下的所有jpg文件glob默认下是不会遍历子文件夹,recursive=False可省略

import globfor filepath in glob.glob(r".sample*.jpg"):    print(filepath)

运行结果:

.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg

glob.glob(pathname, *, recursive=True)

如果需要一并查找n级目录下文件,则需要扩展路径,
这里以二级目录sampleBackup为例:

import globfor filepath in glob.glob(r".sample***.jpg", recursive = True):    print(filepath)

运行结果:

.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg.samplesampleBackupP7200248-2.jpg.samplesampleBackupP7200258-2.jpg

iglob

iglob用法和glob相似,如果使用按照以上两个例子使用,输出结果是相同的。

import globprint("glob:")for filepath in glob.glob(r".sample*.jpg"):    print(filepath)print("-----------------------------------------------------------------")for filepath in glob.glob(r".sample***.jpg", recursive = True):    print(filepath)print("=================================================================")print("iglob:")for filepath in glob.iglob(r".sample*.jpg"):    print(filepath)print("-----------------------------------------------------------------")for filepath in glob.iglob(r".sample***.jpg", recursive = True):    print(filepath)print("=================================================================")

运行结果:

glob:.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg-----------------------------------------------------------------.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg.samplesampleBackupP7200248-2.jpg.samplesampleBackupP7200258-2.jpg=================================================================iglob:.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg-----------------------------------------------------------------.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg.samplesampleBackupP7200248-2.jpg.samplesampleBackupP7200258-2.jpg=================================================================

iglob和glob的区别

glob把遍历到的结果存储到一个list里,而iglob则是一个generator object

print("glob:")globContent = glob.glob(r".sample*.jpg")print(type(globContent), globContent)for content in globContent:    print(content)print("=================================================================")print("iglob:")iglobContent = glob.iglob(r".sample*.jpg")print(type(iglobContent), iglobContent)for content in iglobContent:    print(content)print("=================================================================")

运行结果:

glob: ['.sampleP1020523.jpg', '.sampleP7200248-2.jpg', '.sampleP7200258-2.jpg'].sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg=================================================================iglob:.sampleP1020523.jpg.sampleP7200248-2.jpg.sampleP7200258-2.jpg=================================================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值