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() 方法关闭文件。
pythonwith expression as target: with-body
- expression:表达式,可以是用于打开文件的 open() 函数
- target:变量,用于将 expression 中的结果保存到该变量中
- with-body:with 语句体
pythonwith 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、
pythonfrom 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。
pythonfrom io import BytesIO f_obj= BytesIO() str = 'aaaaa' f_obj.write(str.encode('utf-8')) # 转化为二进制码 print(f_obj.getValue().decode('utf-8')) # 解码操作