python学习-09【文件和目录操作】

1、文件的基本操作

打开文件

通过 open() 来实现创建或打开文件并创建文件对象
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closed=True, opener=None)

  • file:要创建或打开的文件名,需要引号包裹(必选,其余为可选)
  • mode:指定打开文件的模式,默认是 r(只读模式)
  • buffering:用于设置缓冲策略
    • 负数:表示寄存区的缓冲大小为系统默认
    • 0:不缓冲(仅允许在二进制模式下)
    • 1:选择性缓冲(仅在文本模式下)
    • > 1:实际的寄存区缓冲大小(单位是字节)
  • encoding:文件的编码方式。默认是 GBK。
  • errors: 用于指定如何处理编码和编码错误,不能在二进制模式下使用
    • strict:引发 ValueError 异常
    • ignore:忽略编码错误继续执行代码
  • newline:识别换行符,可取值有 None、''、'\n'、'\r'、和 '\r\n'
读取文件

1、read() 方法

read() 方法可以读取指定个数的字符。在 () 中可以指定要读取的字符个数,如果省略,则表示一次性读取文件中的全部内容。

read() 返回一个字符串。
2、readline() 方法

readline() 方法每次读取一行数据
3、readlines() 方法

与 read() 方法类似,都可以读取整个文件内容

readlines() 方法返回一个字符串列表,文件中的每一行内容作为列表中的一个元素

关闭文件

close() 方法用于关闭文件。

如果在打开文件出现了异常,导致文件不能被及时关闭,使用 with 语句会自动调用 close() 方法关闭文件。

python 复制代码
with expression as target:
    with-body
  • expression:表达式,可以是用于打开文件的 open() 函数
  • target:变量,用于将 expression 中的结果保存到该变量中
  • with-body:with 语句体
python 复制代码
with open('info.txt', encoding = 'utf-8') as f:
    txt = f.read()
    print(txt)
向文件中写入内容

要向文件中写入内容,在打开文件时打开模式需要带有 w。

write() 方法可以向文件中写入内容,返回的是写入文件的字符串长度。

  • 在 w 模式下向文件中写入数据,会覆盖文件中原有的内容
  • 指定打开模式为 a,向文本文件中追加内容,不会覆盖原有内容
  • writelines() 方法可以按行写入,该方法接收的参数必须是列表

2、目录的基本操作

Python 内置的 os 模块及其子模块 os.path 可以实现对目录的基本操作
import os
os 模块:

函数 说明
getcwd() 返回当前的工作目录
chdir(path) 改变工作目录,将 path 设置为当前的工作目录
listdir(path) 返回指定路径下的文件和目录信息
mkdir(path) 创建单层目录。如果目录已经存在则抛出异常
makedirs(path) 递归创建多层目录。如果目录已经存在则抛出异常
rmdir(path) 删除单层目录。如果目录非空则抛出异常
removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到非空目录则抛出异常
walk(top[,topdown[,onerror]]) 遍历目录时,返回一个元组,包含所有的路径名、目录列表和文件列表
  • name:获取操作系统的类型
    • nt:Windows 系统
    • posix:Linux、Unix 或 macOS 系统
  • linesep:获取当前操作系统中的换行符
  • sep:获取当前操作系统所使用的路径分隔符
    os.path 模块:
函数 说明
abspath(path) 获取文件或目录的绝对路径
exists(path) 用于判断目录或文件是否存在。(1:True / 0:False)
splitext() 将文件名和扩展名分离
join(path, name) 将目录与目录或目录与文件名拼接起来
isdir(path) 判断是否为有效路径
basename(path) 从路径中提取文件名
dirname(path) 从路径中单独提取文件路径,不包括文件名
绝对路径和相对路径

如果在 open() 函数中不使用字符 r,就需要将路径中的 \ 写成 \\

创建和删除目录

如果想删除非空目录,则需要使用 Python 内置标准模块 shutil 中的 rmtree() 函数。

遍历目录

walk(top[,topdown][,onerror][,followlinks])

  • top:要遍历的目录的路径(必选,其余为可选)
  • topdown:指定的遍历顺序(True:自上而下 / False:自下而上),默认值是 True
  • onerror:指定错误的处理方式
  • followlinks:True:在支持的系统上访问有符号链接指向的目录 / False:优先遍历 top 的子目录

3、文件的高级操作

重命名文件

rename(src, dst)

  • src:要重命名的文件或目录
  • dst:重命名后的文件或目录
在内存中操作数据

IO 模块提供 StringIO 和 BytesIO 用于早内存中操作数据
1、

python 复制代码
from io impoer StringIO

f_obj = StringIO()
f_obj.write('study')
print(f_obj.getValue())

str = 'aaaaaa'
obj = StringIO(str)
txt = obj.read()
print(txt)

2、StringIO 操作的对象是字符串,如果操作对象是二进制数据,则需要使用 BytesIO。

python 复制代码
from io import BytesIO

f_obj= BytesIO()
str = 'aaaaa'
f_obj.write(str.encode('utf-8'))	# 转化为二进制码
print(f_obj.getValue().decode('utf-8'))	# 解码操作
相关推荐
weixin_3077791317 分钟前
在AWS上使用Flume搜集分布在不同EC2实例上的应用程序日志具体流程和代码
python·flask·云计算·flume·aws
LightspeedResearch24 分钟前
冲刺一区!挑战7天完成一篇趋势性分析GBD DAY1-7
学习
Lyrig~34 分钟前
【Convex Optimization Stanford】Lec5. Duality 对偶问题
学习·凸优化
sirius123451231 小时前
自定义数据集 ,使用朴素贝叶斯对其进行分类
python·分类·numpy
shanks662 小时前
【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点
python·pyqt
weixin_307779133 小时前
流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码
大数据·python·音视频·aws
職場上的造物主3 小时前
高清种子资源获取指南 | ✈️@seedlinkbot
python·ios·php·音视频·视频编解码·视频
〖是♂我〗4 小时前
自定义数据集 使用scikit-learn中svm的包实现svm分类
开发语言·python
抱抱宝4 小时前
Pyecharts之特殊图表的独特展示
python·信息可视化·数据分析
字节全栈_kYu4 小时前
微信小程序视频点播在线视频学习系统 毕业设计 课程设计(1)首页_微信小程序视频功能设计流程图
学习·微信小程序·课程设计