文件操作
1.什么是文件
文件是操作系统为应用程序或用户提供的一种硬盘操作的虚拟单位
强调:文件是操作系统提供的虚拟单位
应用程序或者用户对文件的读写操作其实都是向操作系统发送指令
2.为什么要用文件
文件对应的硬盘空间,如果需要考虑营救保存数据那必须使用文件
3.如何使用文件
1.操作文件的流程
#1.打开文件,得到文件句柄并赋值给一个变量
绝对路径:win c:ac linux: a/b/c/
相对路径:相对于当前执行文件所在的文件夹为起始位置开始查找
f=open('test.txt','r',encoding='UTF-8') #默认以r方式打开
#2.通过句柄对文件进行操作
data=f.read()
#3.关闭文件
f.close() 向操作系统发送指令,让操作系统关闭打开的文件,回收操作系统资源
流程分析:#1.由应用程序向操作系统发起系统调用open(....)
#2.操作系统打开文件,并返回一个文件句柄给应用程序
#3.应用程序将文件句柄复制给f
2.打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量
del f 必须在f.close()之后
上下文管理
with open() as f,open() as f:
with open() as f
pass
3.python3中操作文件只有一种 open()
python2中操作文件有file()和open():file()构建文件open()打开文件
4.打开文件的模式
文件句柄=open('文件路径','模式')
#1. 打开文件的模式有(默认为文本模式):
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】无论读写都是以字为单位只能操作文本文件
w,只写模式【不可读;不存在则创建;存在则清空内容】
a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】
#2. 对于非文本文件,我们只能使用b模式,不需要指定encoding
rb
wb
ab
以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
#3. 了解部分
'+'表示可以同时读写某个文件
r+,读写
w+, 写读
a+, 写读
x 只写不读(不可读,不存在则创建,存在则报错)
x+ 写读
xb
5.操作文件的方法
掌握:
f.read()读取所有内容,光标放在文件末尾
f.readline() 读取一行内容,光标移到第二行末尾
f.readlines() 读取每一行内容,存放在列表中
f.write() 针对文本模式的写,需要自己进行换行
f.write().encode() 针对b模式的写,需要自己写换行符
f.writelines() 文件模式
f.writelines([bytes(),encoding='',''.encode()]) b模式
#了解
f.readable()文件是否可读
f.writable() 文件是否可写
f.closed 文件是否关闭
f.encoding 如果文件打开模式为b模式,则没有该属性
f.flush() 立刻将文件内筒从内存刷到硬盘
f.name
6.文件内光标移动
1.read(3)
文件打开方式为文本模式时,代表读取3个字符
文件打开方式为b模式时,代表读取3个字节
2.其余的文件内光标移动都是以字节为单位如seek,tell,truncate
#1.seek有三种移动方式0,1,2,其中1,2,必须b模式下进行,以bytes为单位进行移动
#2.truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打 开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
7.文件的修改
文件的数据是存放在硬盘上的,因此只存在覆盖,不存在修改
方法一:
将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再 由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
1.以读的方式打开源文件 2.将文件内容一次性全读入内存,在内存完成修改
3.以写的方式打开源文件,然后将内容一次性写入到源文件
方法二:
将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文 件覆盖源文件