列出文件夹下所有内容

import os
print(os.listdir())

如果指定了运行路径就返回运行路径文件夹下所有内容(以列表形式返回文件和文件夹)

如果不指定运行路径,就返回Py文件所在文件夹下所有的内容

import os
列表 = os.listdir()
for 元素 in 列表:
    print(元素, os.path.isdir(元素))

结果输出:文件夹名称,False(不是文件夹) True(是文件夹)

os.scandir遍历目录

参数 说明
name 条目的文件名,相对于 scandir path 参数 ( 对应于 os.listdir的返回值)
path 输入路径 NAME ( 不一定是绝对路径) 与 os.path.join(scandir_path, entry.name)
is_dir(*, follow_symlinks=True) 类似于 pathlib.Path.is_dir(),但返回值在 DirEntry 对象上是缓存; 大多数情况下不需要系统调用; 如果 follow_symlinks 是 false,则不要跟随符号链接。
is_file(*, follow_symlinks=True) 类似于 pathlib.Path.is_file(),但返回值在 DirEntry 对象上是缓存; 大多数情况下不需要系统调用; 如果 follow_symlinks 是 false,则不要跟随符号链接。
is_symlink() 类似 pathlib.Path.is_symlink(),但返回值缓存在 DirEntry 对象上;大多数情况下不需要系统调用
stat(*, follow_symlinks=True) 类似 os.stat(),但返回值缓存在 DirEntry 对象上; 不需要对 Windows (。除了符号符号外) 进行系统调用; 如果 follow_symlinks 是 false,则不跟随符号链接( 像 os.lstat() )。
inode() 返回项的节点数;返回值在 DirEntry 对象上缓存
import os
for 元素 in os.scandir('c:/'):
    print(元素.name, 元素.path,元素.is_dir())

查询文件信息

名称 说明
st_size 文件的大小
st_atime 文件的最近访问时间
st_mtime 文件的最近修改时间
st_ctime windows下创建的时间
st_birthtime 在mac、linux下使用,表示创建时间
import os
可遍历的对象 = os.scandir('c:/练习1')
for 文件 in 可遍历的对象:
    print(文件.name,文件.stat())

datetime模块

import datetime as dt
日期时间 = dt.datetime.fromtimestamp(1592442400)
print(日期时间)
print(日期时间.year,日期时间.month,日期时间.day)
print(日期时间.hour,日期时间.minute,日期时间.second)

os.walk()函数

os.walk(top, topdown=True, οnerrοr=None, followlinks=False)

参数 说明
top 要遍历的目录的地址 返回的是一个三元组(root,dirs,files)。
(1)root 所指的是当前正在遍历的这个文件夹的本身的地址
(2)dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
(3)files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown 可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror 需要一个 callable 对象,当walk需要异常时,会调用
followlinks 可选,如果为 True,则会遍历目录下的快捷方式,实际所指的目录(默认关闭), 如果为 False,则优先遍历 top 的子目录。
import os
j = 0
for 文件夹路径,子文件夹列表,文件列表 in os.walk('c:/fdir'):
    for i in 文件列表:
        print(文件夹路径+i)
        j += 1
print(f'共发现{j}个文件')

glob模块

glob是python自带的一个文件操作相关模块,用它可以查找符合自己要求的文件,类似于Windows下的文件搜索

  • 支持通配符操作,有“*”、“?”、“[]”这三个通配符
    • “*”:代表0个或者多个字符;
    • “?”:代表一个字符;
    • “[]”:匹配指定范围内的字符,如[0-9]匹配数字;主要有以下2个主要方法。
import os
import glob
os.chdir('C:/fdir')

列表 = glob.glob('*.jpg')
print(列表)
for 文件 in 列表:
    print(文件)
遍历文件夹深层目录下所有的指定文件:
import os
import glob
os.chdir('C:/fdir')
列表 = glob.glob('**/*.xlsx',recursive=True)
print(列表)
# 用**表示任意层文件或文件夹,recursive=True会不断进入文件夹内。查找该路径下面的所有.xlsx文件,包括深层的文件