文件
打开文件
Python 内置了文件对象,通过 open 函数可以打开文件,返回文件对象。open 函数的语法声明如下:
| 1 | file = open(filename, # 文件名 | 
模式说明:
| 模式 | 说明 | 注意 | 
|---|---|---|
| r | 读模式打开 | 文件必须存在 | 
| w | 清空原内容,写模式打开 | 文件存在则覆盖 文件不存在则新建 | 
| a | 追加模式打开 | 文件存在移到文件尾部 文件不存在则新建 | 
| b | 二进制模式 | 需要与其他模式组合 | 
| + | 读写模式 | 需要与其他模式组合 | 
例如:
- rb:是以二进制打开读模式
- r+:文件可以读可以写(打开后默认文件指针是0,不清空文件,会覆盖已有的内容)
- w+:文件可以读可以写(打开后默认文件指针是0,先清空文件,直接覆盖已有的内容)
- a+:文件可以读可以写(打开后默认文件指针是文件末尾)
- ab+:文件可以读可以写,二进制模式(打开后默认文件指针是文件末尾)
等等
open 的其他参数:
buffering 表示缓冲模式,(1)-1 表示默认的缓存大小,即是8KB。(2)0 表示不缓存。(3)1 表示文本模式以换行来做缓冲结束。(4)大于1表示实际大小。
encoding 指定打开文本文件时时,字符的编码,例如: encoding = ‘utf-8’
with 语句打开文件
用 with 语句打开的文件,Python 会保证 with 语句执行完毕之后,正常关闭文件。格式如下:
| 1 | with open('myfilename', 'r') as file: | 
无论是否发生异常,都会执行完毕之后关闭打开的文件。
关闭文件
直接调用 file.close() 即可关闭文件。还没有写入文件实际内容的缓冲区的数据会被写入。
查询文件状态
- closed 属性,表示文件是否已经被关闭,如果关闭了则返回 True 。
- mode 属性,当前文件的打开模式
- name 属性,文件名
读写文件
常见方法:
| 方法 | 说明 | 
|---|---|
| write(s) | 用于往文件对象中写入数据 | 
| writelines(s) | 用于将列表(或可迭代对象)中的字符串逐个写入文件(不添加换行符) | 
| read([size]) | 读取 size 字节(二进制文件)或者 size 个字符(文本文件); 忽略 size 则全部读取。返回读取结果 | 
| readline() | 读取一行,返回读取结果 | 
| readlines() | 读取所有行,返回读取到的字符串列表 | 
| seek(offset,[whence]) | 移动文件指针到新位置,单位字节,可以是负数 0: 从文件头算起 1: 当前位置算起 2: 文件结尾算起 | 
| tell() | 返回当前的文件指针 | 
| flush() | 刷新缓冲区写入文件 | 
| truncate([size]) | 在指定位置截断文件,位置后面的部分全部删除 不指定 size 则从当前文件指针位置开始截断 | 
pickle 模块读写二进制
pickle 模块可以将对象进行序列化和反序列化,与读写二进制文件。
例如:
| 1 | import pickle | 
目录操作
目录操作需要使用到 os 模块和 os.path 模块。(import os 之后也可以使用 os.path 子模块了)
os 模块的常用变量
- name : 获取操作系统类型;值 nt 为 Windows 系统; posix 为 Linux、UNIX、MAC OS
- linesep : 当前操作系统的换行符
- sep : 当前操作系统的路径分隔符
os 模块常用方法
| 方法 | 说明 | 
|---|---|
| getcwd() | 返回当前工作目录 | 
| listdir(path) | 返回指定目录下的文件与子目录列表 | 
| mkdir(path[,mode]) | 创建一个目录 | 
| makedirs(path1/path2/path3... [,mode]) | 创建一个目录(多级的) | 
| rmdir(path) | 删除目录 | 
| removedirs(path1/path2/path3...]) | 删除一个目录(多级的) | 
| chdir(path) | 改path为当前目录 | 
| remove(path) | 删除文件 | 
| rename(src,dest) | 重命名文件或目录 | 
| stat(path) | 返回文件的所有属性 | 
| startfile(path [,operation]) | 用默认关联的应用程序打开文件 | 
| chmod(path, mode) | 改变文件权限 | 
| walk(top [,topdown [,onerror]]) | 遍历目录树,返回一个元组 包含所有路径名、目录列表、文件列表 | 
| get_exec_path() | 返回可执行文件的搜索路径 | 
| access(path, accessmode) | 检测是否拥有指定权限。 可以的值有 R_OK、W_OK、X_OK、F_OK | 
os.path 模块常用方法
| 方法 | 说明 | 
|---|---|
| abspath(path) | 返回目录的绝对路径 | 
| exists(path) | 判断文件或目录是否存在 | 
| join(path, *paths) | 拼接目录与文件,得到新路径 | 
| basename(path) | 从路径中提取文件名 | 
| dirname(path) | 从路径中提取文件的目录路径(不含文件名) | 
| isdir(path) | 判断是否为目录 | 
| isfile(path) | 判断是否为文件 | 
| isabs(path) | 判断是否为绝对路径 | 
| splitext(path) | 分离文件的扩展名 | 
| split(path) | 分离路径,返回列表形式 | 
| splitdrive(path) | 分离路径的驱动器名称 | 
| getsize(path) | 返回文件的大小 | 
| getmtime(path) | 返回文件的修改时间 | 
| getctime(path) | 返回文件的创建时间 | 
| getatime(path) | 返回文件的最后访问时间 |