使用python的os模块,简单方便完成对文件夹、文件及路径的管理与访问操作。
1 前言
在最近开发中,经常需要对文件进行读取、遍历、修改等操作,想要快速、简单的完成这些操作,我选择用 python 。通过 python 的标准内置 os 模块,只需要几行代码,即可完成想要的操作。经过对 os 的使用,本文把 os 模块的常用的操作进行总结,主要分为以下几个划分:
- 文件夹操作:即文件夹的创建、修改(改名/移动),查询(查看、遍历)、删除等。
- 文件操作:即文件的创建、修改、读取、删除等。
- (文件夹/文件)路径操作:即文件夹或文件的路径操作,如绝对路径,文件名与路径分割,扩展名分割等
本文涉及常用 的 os 函数的使用展示,主要使用 python 交互模式下进行代码说明。后续操作默认已经引入 os 模块,如下:

?
如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python圈,裙号930900780,可领取python学习资料,会节约很多时间,减少很多遇到的难题。
2 文件夹操作
以本地 E://pythontest 目录作为演示目录,此目录下当前文件如下:
test 及 test-1 是文件夹,test.txt 及 test-1.txt 是文件。
2.1 查询操作
熟悉 linux 同学应该对 ls / pwd / cd 等操作不陌生,对应的 python 也有对应的方法,主要包括:
- listdir : 文件及目录列表
- getcwd :获取当前目录
- chdir :更换目录
- stat :文件及目录基本信息
- walk :递归遍历目录
其中 stat 函数返回的是文件或者目录的基本信息,具体如下:
- st_mode: inode 保护模式
- st_ino: inode 节点号。
- st_dev: inode 驻留的设备。
- st_nlink: inode 的链接数。
- st_uid: 所有者的用户ID。
- st_gid: 所有者的组ID。
- st_size: 普通文件以字节为单位的大小
- st_atime: 上次访问的时间。
- st_mtime: 最后一次修改的时间。
- st_ctime: 创建时间。
日常使用中,我们一般使用 st_size 、st_ctime 及 st_mtime 获取文件大小,创建时间,修改时间。另外,我们看到输出的时间是秒数,在这里提一下,关于日期的转换处理。
(1)秒数转日期时间格式字符串
(2)格式日期时间字符串转秒数
- 遍历操作 walk 函数对目录进行递归遍历,返回 root,dirs,files,分别对应当前的遍历的目录,此目录中的子目录及文件。
2.2 创建操作
- mkdir :新建单个目录,若目录路径中父目录不存在,则创建失败
- makedirs :新建多个目录,若目录路径中父目录不存在,则自动创建
2.3 删除操作
- rmdir :删除单个空目录,目录不为空则报错
- removedirs : 按路径删除递归多级空目录,目录不为空则报错
由于删除空目录的限制,更多的是使用 shutil 模块中的 rmtree 函数,可以删除不为空的目录及其文件。
2.4 修改操作
- rename :重命名目录或文件,可修改文件或目录的路径(即移动操作),若目标文件目录不存在,则报错。
- renames :重命名目录或文件,若目标文件目录不存在,则自动创建
如果目标路径文件已经存在,那么os.rename()和os.renames()都会报错:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。
3 文件操作
3.1 查询操作
- open/read/close :文件读取
- stat :文件信息,详细见前面文件夹中的 stat 说明
注意 open/read/close 需要一起操作,其中 open 操作需要指定模式,上述是以读写模式打开文件,若文件不存在则创建文件。各模式具体如下:
flags -- 该参数可以是以下选项,多个使用 "|" 隔开:
- os.O_RDONLY: 以只读的方式打开
- os.O_WRONLY: 以只写的方式打开
- os.O_RDWR : 以读写的方式打开
- os.O_NONBLOCK: 打开时不阻塞
- os.O_APPEND: 以追加的方式打开
- os.O_CREAT: 创建并打开一个新文件
- os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
- os.O_EXCL: 如果指定的文件存在,返回错误
- os.O_SHLOCK: 自动获取共享锁
- os.O_EXLOCK: 自动获取独立锁
- os.O_DIRECT: 消除或减少缓存效果
- os.O_FSYNC : 同步写入
- os.O_NOFOLLOW: 不追踪软链接
3.2 创建操作
前面已提到,使用 open ,指定模式, 若文件不存在,则创建。有点类似 linux 操作中的 touch。
3.3 修改操作
- open/write/close :写入文件内容
- rename ,renames : 与前面介绍的修改名称、移动操作一致。
3.4 删除
- remove :删除文件,注意不能删除目录(使用 rmdir/removedirs)
4 路径操作
在使用文件或目录过程中,经常需要对文件及目录路径进行处理,因此,os 中有一个子模块 path,专门就是处理路径操作的。主要有以下操作:
- basename/dirname:获取路径尾部和路径头部。其实就是以路径中最后一个 / 为分割符,分为头(head) 和尾(tail)两部分,tail 是 basename 返回的内容,head 是 dirname 返回的内容。经常用于获取文件名,目录名等操作
- join :合成路径,即把两个参数使用系统路径分割符进行连接,形成完整路径。
- split :分割文件名和文件夹,即把 path 以最后一个斜线"/"为分隔符,切割为 head 和 tail ,以 (head, tail) 元组的形势返回。
- splitext :分割路径名和文件扩展名,把path 以最后一个扩展名分隔符“.”分割,切割为 head 和 tail ,以 (head, tail) 元组的形势返回。注意与 split 的区别是分隔符的不同。
5 示例应用
下面以一些平时使用到的场景,对前面的操作函数进行综合使用。
5.1 批量修改文件名

?
5.2 遍历目录及子目录下所有指定扩展名的文件

?
5.3 按修改时间排序指定目录下的文件

?
6 总结
在需要对文件或者目录进行操作时,python 是一个简单快速选择。本文通过 python 的标准内置 os 模块及子模块 os.path 的常用方法进行介绍,最后结合使用场景进行综合使用。相信已经满足大家对文件及目录操作的大部分需求。
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以进裙930900780领取。
本文章素材来源于网络,如有侵权请联系删除。
零基础小白必看:python基本操作-文件、目录及路径
原文:https://www.cnblogs.com/python-miao/p/13818911.html