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(