Python文件处理实用指南
时间:2022-07-24
本文章向大家介绍Python文件处理实用指南,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对文件的操作算是Python
中一个基础又重要的知识点了,无论是在爬虫、数据分析、Web开发,还是在编写图形界面、进行数据分析,都有可能需要用到文件相关的操作。
今天就来总结性地学习和回顾一下,Python各类文件处理。
一、open()
模式
open()
函数
open(文件名,操作模式)
函数用来以指定的模式打开一个给定文件名的文件。
文件操作的基础模式
列名 |
列名 |
---|---|
w |
写模式:将擦除文件的内容,重新写入 |
r |
读模式:只读取文件的内容 |
a |
追加模式:在文件内容最后追加内容 |
实例演示
使用w
模式写入文件内容
使用r
模式读取文件内容
使用a
模式追加文件内容
二、获取目录列表
基础的目录列表获取函数
通过os
模块
-
os.listdir(目录名)
:其接受一个目录名作为参数,返回一个列表,列表中包含目录下的所有文件名和子目录名; -
os.scandir(目录名)
:其行为类似于listdir()
,但是其返回的是一个文件对象的迭代器,而非一个字符串。
通过pathlib
模块
-
pathlib.Path.iterdir()
:其工作在一个path
对象上,并返回一个类似于scandir()
的迭代器对象。
实例演示
文件夹的结构如下所示:
使用os.listdir()
获取
使用os.scandir()
获取
使用pathlib
获取
三、获取文件属性
Python中有丰富的函数和方法用来获取文件的信息。
通过os
模块
-
os.stat(路径字符串)
,给定一个文件或文件夹路径作为参数,返回一个stat_result
对象; -
os.scandir(目录名称)
,这个方法上面我们介绍过,其返回一个可迭代对象,我们遍历这个可迭代对象,每一个遍历的对象都有一个stat()
方法,其返回值与os.stat()
一样。
通过pathlib
模块
-
pathlib.Path.iterdir()
,其返回值中的每一个对象都有一个stat()
方法,和os.scandir()
一样。
实例演示
使用os.stat()
其返回的stat_result()
对象内包含如下常见的信息:
-
st_mode
,文件模式:包括文件类型和文件模式位(即权限位)。 -
st_ino
,与平台有关,但如果不为零,则根据 st_dev 值唯一地标识文件。通常:- 在 Unix 上该值表示索引节点号 (inode number)。
- 在 Windows 上该值表示 文件索引号 。
-
st_dev
,该文件所在设备的标识符。 -
st_nlink
,硬链接的数量。 -
st_ui
,文件所有者的用户 ID。 -
st_gid
,文件所有者的用户组 ID。 -
st_size
,文件大小(以字节为单位),文件可以是常规文件或符号链接。符号链接的大小是它包含的路径的长度,不包括末尾的空字节。 -
st_atime
,最近的访问时间,以秒为单位。 -
st_mtime
,最近的修改时间,以秒为单位。 -
st_ctime
,取决于平台:- 在 Unix 上表示最近的元数据更改时间,
- 在 Windows 上表示创建时间,以秒为单位。
使用os.scandir()
四、创建目录
创建目录依然可以借助os
模块和pathlib
模块。
通过os
模块
-
os.mkdir(目录名)
,通过给定的目录名,创建单个目录; -
os.makedirs(目录路径)
,创建一个完整的目录树;
通过pathlib
模块
-
pathlib.Path.mkdir()
,从给定的Path
对象创建一个目录;
实例演示
五、删除文件和目录
删除文件
通过os
模块
-
os.remove(文件路径)
,删除单个文件,如果文件不存在,则抛出FileNotFound
异常,如果路径为目录,则抛出IsADirectoryError
异常; -
os.unlink(文件路径)
,与os.remove()
相同;
通过pathlib
模块
-
pathlib.Path.unlink()
,删除Path()
对象文件。
删除目录
删除单个目录
-
os.rmdir(目录路径)
,删除一个指定的目录路径,如果目录不为空,则抛出OSError
异常; -
pathlib.Path.rmdir()
,删除路径对象。
删除目录树
-
shutil.rmtree(目录路径)
,删除一个完整的目录树;
实例演示
删除文件
删除目录
六、文件名模式匹配
有时候需要对文件名进行模式匹配(包括正则)模糊查询,就需要用到文件名模式匹配相关的函数和方法了。
-
.startswith()
和endswith()
方法,两者都在字符串上运行,并且在处理文件名时可以使用; -
fnmatch.fnmatch(文件名,匹配模式)
,检测 filename 字符串是否匹配 pattern 字符串,返回 True 或 False。 -
glob.glob(匹配模式)
,返回匹配 pathname 的可能为空的路径名列表,其中的元素必须为包含路径信息的字符串。 -
pathlib.Path.glob(匹配模式)
,类似于与glob
,但是基于Path
对象进行操作。
实例演示
字符串处理
使用fnmatch
七、遍历目录树和处理文件
-
os.walk(目录路径,topdown=True)
,生成目录树中的文件名,方式是按上->下或下->上顺序浏览目录树。对于以 top 为根的目录树中的每个目录(包括 top 本身),它都会生成一个三元组 (目录路径, 目录名列表, 文件名列表)。
实例演示
八、临时文件和目录
-
tempfile.TemporaryFile(模式)
,以指定模式创建和打开一个临时文件; -
tempfile.TemporaryDirectory()
,创建一个临时目录并返回它;
实例演示
九、复制、移动和重命名文件
复制
-
shutil.copy(源,目标)
,将源文件复制到目标,如果目标为一个目录,则使用源相同的文件名; -
shutil.copytree(源目录,目标目录)
,将以 源目录 为根起点的整个目录树拷贝到目标目录并返回目标目录。
移动和重命名
-
shutil.move(源,目标)
,将一个文件或目录从源移动到目标; -
os.rename(现在名称,新名称)
,重命名一个文件或目录;
十、归档和压缩
-
zipfile.Zipfile(压缩包名,模式)
,以指定的模式打开一个压缩包; -
zipfile.Zipfile().extract(文件名)
,从zip文件中提取给定的文件; -
shutil.make_archive(基础文件名,格式名,根路径)
,从给定的参数中压缩打包一个文件夹为压缩包; -
shutil.unpack_archive(压缩包文件名,提取到的目录)
,解压一个压缩包到指定目录;
实例演示
十一、读取多个文件
-
fileinput.input([文件名列表])
,从给定的文件名列表中读取每一个文件;
- 可扩展机器学习——线性回归(linear Regression)
- 简单易学的机器学习算法——Label Propagation
- 利用Theano理解深度学习——Convolutional Neural Networks
- 持续精进——我的2017年终总结
- 实战 | Elasticsearch打造知识库检索系统
- Elasticsearch实战 | 必要的时候,还得空间换时间!
- 转--以io.Writer为例看go中的interface{}
- Go支持https协议的简单例子
- Elasticsearch索引增量统计及定时邮件实现
- 机器学习中的特征空间
- 简单易学的机器学习算法——马尔可夫链蒙特卡罗方法MCMC
- 推荐算法——基于图的推荐算法PersonalRank算法
- 推荐算法——非负矩阵分解(NMF)
- 【Go 语言社区】转-golang windows 判断锁屏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 实现截屏功能的实例
- android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)
- Android通过overScrollBy实现下拉视差特效
- Android使用手势实现翻页效果
- Android应用内悬浮窗的实现方案示例
- Android实现View拖拽跟随手指移动效果
- Android中button的onClick事件几种方法
- Android利用Glide获取图片真正的宽高的实例
- Android 自定义AlertDialog对话框样式
- Android自定义一个图形单点移动缩小的效果
- 详解Android实现购物车页面及购物车效果(点击动画)
- Android利用LitePal操作数据库存取图片
- Android 改变图标原有颜色和搜索框的实例代码
- Android自定义滑动验证条的示例代码
- Android实现图片转高斯模糊以及高斯模糊布局