0x01 打开一个文件
python中内置了文件对象,通过open()函数就可以制定模式打开指定文件,并创建文件对象。该函数的格式如下:
open(file[,mode='r'[,buffering=-1]])
- file:指定要打开或创建的文件名称,如果该文件不存在当前目录,则需要指明路径
- mode:指定打开文件后的处理模式
- buffering:指定读写文件的缓冲模式,数值为0表示不缓存,数值为1表示使用行缓存模式,数值大于1表示缓冲区的大小,默认值为-1。二进制文件和非交互文本文件以固定大小的块缓冲单位,等价于IO
0x02 对文件内容进行操作
向文本文件写入内容
如果需要向文本文件中写入内容,在打开文件时就需要指定文件的打开模式为写模式。应根据不同的开发需要选取不同的写入模式
- w:写入模式,文件可以不存在,如果不存在,则创建文件
我们的程序目录内容为:
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','w')
f.write(s)
f.close()
运行结果,多了一个demo.txt,文件内的内容就是我们写入的
- x:写入模式,文件必须要存在,不存在抛出异常
此是没有demo.txt文件,打开模式为x
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','x')
f.write(s)
f.close()
运行结果如下图,我们可以看到爆出一个文件不存在的错误
- a:追加模式,不覆盖文件的原始内容
w模式每次写入都会将文件的原始内容删除,然后在写,a模式不会删除
#! /usr/bin/python
#coding:utf-8
s = 'hello python! \n'
f=open('demo.txt','a')
f.write(s)
f.write(s)
f.close()
运行结果,我们可以看到demo.txt的内容,这里demo.txt存不存在无所谓
读取文件中的内容
- r:读模式(默认模式,可以审略),如果文件不存在,则抛出异常
- +:读写模式
读取文件第一行内容:
#! /usr/bin/python
#coding:utf-8f=open('demo.txt','r')
print(f.readline())
f.close()
运行结果
读取文件所有内容:
#! /usr/bin/python
#coding:utf-8f=open('demo.txt','r')
print(f.read())
f.close()
运行结果
0x03 关闭文件对象
当操作完文件内容以后,一定要关闭文件对象,这样才能确保所做的修改都保存到文件中。关闭文件对象的语句是:
f.close()
文件操作一般遵循打开—读写—关闭的基本流程,但是如果文件读写操作代码发生了异常,就很难保证被正常关闭。可以使用上下文管理关键字with来避免产生这个问题。对于with的具体原理,这里参考这边文章:https://www.cnblogs.com/wongbingming/p/13791972.html
关键字with能够管理资源,总能保证文件正确关闭,并且可以在代码执行结束后自动还原开始执行代码块时的现场,
#! /usr/bin/python
#coding:utf-8with open('demo.txt','a') as f:f.write('233333333 \n')
运行结果,关闭文件都不用我们关闭