文件
打开文件
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) | 返回文件的最后访问时间 |