一、文件操作步骤
step1:打开文件,得到文件句柄并赋值给一个变量
step2:通过句柄对文件进行操作
step3:关闭文件
举例:
a = open('hello world', 'r', encoding = 'utf-8') #打开 ‘hello world’ 文件,得到文件句柄并赋值给一个变量 a
data = a.read() #通过句柄对文件进行读操作
a.close() #关闭文件
注意事项一:
关于 a.close() 关闭文件
打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。
在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:
1、f.close() #回收操作系统级打开的文件
2、del f #回收应用程序级的变量
其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源。
而python自动的垃圾回收机制决定了我们无需考虑del f。
这就要求我们,在操作完毕文件后,一定要记住f.close()
简单的来说,每 open() 一个文件,就要求我们必须 close()
用关键字 with ,可以使用 close()
with open('hello world', 'r', encoding = 'utf-8') as a:
data = a.read()
print(data)
等同于
a = open('hello world', 'r', encoding = 'utf-8')
data = a.read()
print(data)
a.close()
注意事项二:
关于 open() 文件时编码方式的问题
如果我们在 open() 文件的时候不说明编码方式的时候,系统默认的是按照操作
系统的编码方式来(windows操作系统编码方式是gbk,linux操作系统编码方式是utf-8)
所以为了避免不乱码、不报错 文件以什么编码方式保存的,就要以什么编码方式打开
二、关于文件操作模式
r,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a,追加写模式【不可读;不存在则创建;存在则只追加内容】
1.‘r’ 只读模式
open() 文件时,如果不指定操作方式,默认为只读模式
读操作的相关函数:
.read()
功能:对文件进行读操作,读取全部文件全部内容
.readable()
功能:判读文件是否可读
举例:
a = open('helloworld', 'r', encoding = 'utf-8')
date = a.read()
print(date)
print(a.readable()) #判断文件是否可读,是的话返回True
a.close()
a = open('helloworld', 'w', encoding = 'utf-8')
print(a.readable()) #判断文件是否可读,否的话返回True
a.close()
.readline()
功能:读取文件的一行内容
举例:
a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readline())
print(a.readline())
print(a.readline())
a.close()
#执行结果:
aaaaa
bbbbb
ccccc
#获取的每一行中间会有一个空白行间隔,那是因为每一行默认有一个换行符
#通过以下方式可以去掉间隔行
a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readline(),end = '')
print(a.readline(),end = '')
print(a.readline(),end = '')
a.close()
#执行结果
aaaaa
bbbbb
ccccc
.readlines()
功能:读取文件每一行内容,并将每一行内容存放在一个列表里
举例:
a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readlines())
a.close()
#执行结果
['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
2.‘w’ 只写模式
在写模式下,执行文件
如果文件存在,将文件内容清空再执行其他操作
如果文件不存在,新建该文件
写操作的相关函数
.write()
功能:针对文本模式的写,需要自己写换行符
举例:
a = open('helloworld', 'w', encoding = 'utf-8')
a.write('aaaa\n')
a.write('bbbb\n')
a.close()
#将文件内容清空,在执行写操作
.writelines()
功能:以列表形式写文件
举例:
a = open('helloworld', 'w', encoding = 'utf-8')
a.writelines(['aaaa\n', '1111\n'])
a.close()
.writeable()
功能:判断文件是否可写
举例:
a = open('helloworld', 'w', encoding = 'utf-8')
print(a.writable())
a.close
#执行结果
True
注意:
在给文件写内容是,写的参数必须是字符串类型,如果写入其他类型会报错
3.‘a’模式 追加写模式
举例:
a = open('helloworld', 'a', encoding = 'utf-8')
a.write('追加到最后一行')
a.close()
任务:
打开一个文件,保留其第二行内容
src_f = open('helloworld', 'r', encoding = 'utf-8')
data = src_f.readlines()
src_f.close()
print(data)
dst_f = open('helloworld', 'w', encoding = 'utf-8')
dst_f.write(data[1])
dst_f.close()
写在后面:
最近都好忙,在忙着发学院会议论文、忙着发ccc会议论文、忙着写开题报告、忙着投专利
总感觉自己效率不是很高
自己也一直想办法 努力提高自己效率
好好加油吧
不要在忙碌中迷失了自我
不要忘记最初的梦想
我觉得,最可贵的事情 就是在不断的成长过程中
保持那颗善良的心 坚持自己的梦想
一直想去大城市闯闯
虽然过来的人总和我说 一个人在外 太不容易
我好想一直就是个倔强的人
我一直想证明 我是一个厉害的小伙郭
加油啦
来源:oschina
链接:https://my.oschina.net/u/4408529/blog/3276905