[Python自动化办公]02遍历、搜索文件及查询文件信息

本文介绍了Python如何遍历文件夹、搜索匹配文件名以及查询文件信息。通过os.walk()遍历文件,利用字符串方法、glob和fnmatch模块搜索文件。查询文件信息包括文件大小、时间戳,并使用time和datetime模块转换时间格式。实战部分展示了如何筛选大于100MB的zip文件和早于2020年的压缩包。
摘要由CSDN通过智能技术生成

1.遍历文件夹

1.1 把文件夹里的文件遍历一次

os.walk(path),返回元组(dirpath, dirnames, filenames)
path写法:当前文件夹可写成’./’,也可写’.\’,或者’.’
PS:推荐使用’.\‘和’.’,在windows中输出路径格式统一,均为反斜杠(\)

import os
for dirpath, dirnames, files in os.walk('.\\'):
    # 当前文件夹下所有子文件夹(包含本身)的相对路径
    print(dirpath)
    # dirpath的一级子文件夹列表
    print(dirnames)
    # dirpath本级的文件列表
    print(files)

dirnames,files分别为打开dirpath文件夹下的子文件夹列表和文件列表,重点说明:此处子文件夹和文件是指打开dirpath文件夹本身所显示的文件夹和文件。

2.搜索、匹配文件名称

2.1 利用字符串内置的方法

.startswith()和 .endswith()

# 文件名.startswith(字符串):判断文件名是否以字符串开头
print('abc.txt'.startswith('ab'))
# 文件名.endswith(字符串):判断文件名是否以字符串结尾
print('abc.txt'.endswith('txt'))

这两种方法为内置方法,不需要使用import

2.2 glob模块

glob.glob(),返回文件相对路径

import glob
# 匹配本级的所有py文件,并返回列表
print(glob.glob('*.py'))
# 匹配本级和子文件夹的py文件
# **表示任意层文件夹
# recursive=True表示深度进入子文件夹,没有其则不会匹配本级文件
print(glob.glob('**/*.py', recursive=True))
模式 意义
* 匹配所有
? 匹配任何单个字符
[seq] 匹配seq中的任何字符
[!seq] 匹配任何不在seq中的字符

2.3 fnmatch模块

fnmatch.fnmatch(’’,’’)

import fnmatch
# 前者去匹配后面条件,符合则返回True,不符合则返回False
print(fnmatch.fnmatch('learning1.py', 'learning[0-9].py'))

3.查询文件信息

调用os.scandir()中的stat()方法返回文件可查询信息

import os
for file in os.scandir():
    print(file.stat())

输出:os.stat_result(st_mode=16895, st_ino=0, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=0, st_atime=1581961227, st_mtime=1581931126, st_ctime=1581931117)
注:其参数说明请看上一章有具体说明,如果在Mac、Linux下,有st_birthtime表示创建时间。

3.1 获取文件的大小

import os
for file in os.scandir():
    # 获取文件名和文件大小(字节)
    print(file.name, file.stat().st_size)
    # 获取文件名和文件大小(KB)
    print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值