自学Python:python中对文件的操作

python是一类脚本语言,经常被使用在自动化运维工作中,为运维工作提供了很大的便利,在运维工作中,经常需要对文件进行各种操作,因此,python提供了各种各样对文件的操作方法,我们来看一看吧。

文件的操作方法

方法 功能
open() 打开文件
close() 关闭文件
read(size=-1) 从文件中读取size个字符,如果没有指定size,则会读取剩余的所有字符,并且返回一个字符串
readline() 从文件中读取一行,遇到换行符结束
write(str) 将字符串str写入文件
writelines(seq) 向文件中写入一个字符串序列seq,seq应该是一个返回字符串的可迭代对象
seek(offset, from) 在文件中移动文件指针,从from(0表示起始位置,1表示当前位置,2表示文件末尾)偏移offset个位置
tell() 返回当前文件指针在文件中的位置

打开文件

在python中使用open()打开文件并返回一个文件对象
我们可以在IDLE中使用help查看open()函数的各种参数以及使用说明
自学Python:python中对文件的操作
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
一般对于open()函数,我们主要使用前两个参数,第一个参数是传入的文件名,如果只有文件名,而没有路径的话,python会默认在当前目录中去找到该文件并打开,如果文件不存在呢,那就要看第二个参数了,第二个参数指定文件打开的模式:

打开模式 执行操作
‘r’ 以只读方式打开文件(默认)
‘w’ 以写入方式打开文件,如果文件已经存在则会覆盖原文件内容,如果不存在则会直接创建
‘x’ 新建文件并以写入模式打开,如果文件已经存在,则会引发异常
‘a’ 以写入模式打开,如果文件已经存在,则在文件末尾追加写入
‘b’ 以二进制模式打开文件
‘t’ 以文本模式打开文件(默认)
‘+’ 可读写模式
‘U’ 通用换行符支持

使用open打开一个文件后,他会返回一个文件对象,拿到这个文件对象,就可以对该文件进行读取和修改
**我们先在E盘中新建一个txt文件(test.txt),并在文件中写入一些内容
f = open(‘E:/test.txt’)
**
自学Python:python中对文件的操作

关闭文件

由于python有垃圾回收机制,会在文件对象的引用计数为零的时候自动关闭文件,所以在python中,如果忘记关闭文件并不会像C语言那样造成内存泄漏的危险,但是,在python中,如果你对一个文件进行了写入操作,那么应该在写入操作完成后关闭文件,因为python可能会缓存你的数据,如果发生断电或者其他异常事件,就会造成那些数据不会写入文件当中,因此我们需要养成一个及时关闭文件的好习惯。
使用文件对象调用close函数关闭文件:f.close()

文件的读取和文件指针的定位

文件的读取方法有很多,可以使用文件对象的read()和readline()方法,也可以使用list(f)或者使用迭代的方式来读取,read()方法是按字节为单位来读取,如果不设置size的大小,则会读取文件中全部内容,读取完毕后,文件指针会指向文件的末尾,使用tell方法会知道文件指针现在的位置。

自学Python:python中对文件的操作
文件指针就相当于一个书签,在下次读取文件的时候,文件指针所在位置之前的内容将不会被读取到,我们可以使用seek()方法来调整文件指针的位置,seek(offset, from)有两个参数,表示从from偏移offset个字节,因此将文件指针设置到起始位置,使用seek(0, 0)即可。
自学Python:python中对文件的操作
readline()方法读取文件指针后的一整行内容,遇到换行符结束
自学Python:python中对文件的操作
对于文件读取,我们也可以将文件内容放到列表中并显示出来
list(f)

自学Python:python中对文件的操作
如果需要遍历文件中的每一行,我们可以直接对文件对象进行遍历,而不需要先将文件内容存入列表,再对列表进行遍历,这样的效率肯定是不高的
自学Python:python中对文件的操作

文件的写入

要向文件中写入数据,我们需要在打开文件的时候指定打开模式为’w’或者’a’模式,如果不指定写入模式的话,使用write或者writelines向文件中写入数据会报错,而且,我们如果以写入模式打开一个已经存在的文件,那么原文件中的内容会被全部删除。
自学Python:python中对文件的操作
自学Python:python中对文件的操作
此时数据并没有真正的写入文件当中,数据只是在内存中缓存着,我们需要在写入后对文件进行关闭,数据才会真正存入文件
自学Python:python中对文件的操作
可以看到,文件中之前的内容已经被全部删除,使用write方法写入的数据并没有写入文件,接下来我们使用close方法关闭文件

自学Python:python中对文件的操作

自学Python:python中对文件的操作
还有一个writelines方法,他可以讲一个返回字符串的可迭代序列写入文件当中
自学Python:python中对文件的操作
可以看到,我们直接使用write方法将一个返回字符串的列表写入文件会报错,接下来我们使用writelines方法
自学Python:python中对文件的操作