python中的文件操作基础

 

在 Python 中要操作文件需要记住几个函数和方法:

open函数,打开文件,并且返回文件操作对象

read和readline 、readlines方法,将文件内容读取到内存

write方法,将指定内容写入文件

close方法,关闭文件

 

open函数

在Python语言中,负责文件操作的称为文件对象,文件对象不仅可以访问存储在磁盘中的文件,也可以访问网络文件。

通过文件句柄进行文件操作,会用到open函数。

Python中用于访问文件的open函数,应用Python提供的open函数可以返回文件对象。open函数提供了输入/输出操作的通用接口,open函数成功打开文件后会返回一个文件对象,打开失败时会抛出异常IOError。open函数的基本语法如下:

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

open函数有八个参数,分别是fileName、mode、buffering、encoding、errors、newline、closefd、opener,比较重要的是前四个参数,除了fileName参数外,其它都有默认值,因此使用open函数时,不需要传入全部参数。

下面重点对前四个参数予以详细说明:

☆fileName指定了要打开的文件名称,fileName的数据类型为字符串,fileName也包含了文件所在的存储路径,存储路径可以是相对路径,此时文件在工程目录下面f=open('test.txt','r'),也可以是绝对路径,此时可任意指定目录,比如f=open('d:/ pythonDemo/test.txt','r')

☆mode指定了文件的打开模式,也就是设定文件的打开权限。文件的打开模式有:

python中的文件操作基础

☆buffering用于指定打开文件所用的缓冲方式,缓冲是指用于读取文件的缓冲区,缓冲区就是一段内存区域。设置缓冲区的目的是先把文件内容读取到缓冲区,可以减少CPU读取磁盘的次数。Buffering为0时表示不缓冲,为1时表示只缓冲一行数据,为-1时表示使用系统默认缓冲机制,默认为-1。任何大于1的值表示使用给定的的值作为缓冲区大小。一般情况下使用函数默认值即可。

☆encoding用于指定文件的编码方式,默认采用utf-8,编码方式主要是指文件中的字符编码。我们经常会碰到这样的情况,当打开一个文件时,内容全部是乱码,这是因为创建文件时采用的编码方式,和打开文件时的编码方式不一样,就会造成字符显示错误,看上去就是乱码。

 

文件操作的流程

1. 打开文件,得到文件对象(有资料说是句柄)一个变量

2. 通过句柄对文件进行操作

3. 关闭文件

 

例1、用记事本先建立一个test.txt文件,通过文件句柄读取这个文件。

test.txt文件的内容如下:

这是python测试文件

good!

 

新建一个pyTest01.py代码文件内容如下:

filename = 'test.txt'

f = open(filename,'r',encoding='utf-8') #打开文件

context = f.read()  #文件进行操作

print(context)

f.close()          #关闭文件

 

python中的文件操作基础

 

运行结果:

python中的文件操作基础

 

 

不要小看关闭文件这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()。示例如下。

例2、使用with open()的代码文件pyTest02.py内容如下:

filename = 'test.txt'

with  open(filename,'r',encoding='utf-8') as f: #打开文件

  context = f.read()  #文件进行操作

  print(context)

python中的文件操作基础

运行结果和上例一样。

 

write方法

写数据:使用write(“content”),可以完成向文件写入数据,注意:如果文件不存在那么创建,如果存在那么就先清空文件(覆盖),然后写入数据到文件里.。

例3、给test.txt文件追加两行文本

filename = 'test.txt'

f = open(filename,'a',encoding='utf-8') #打开文件,追加

f.write('hello,你好\n')  #换行符\n

f.write('呵呵,哈哈\n') 

f.close() #关闭文件

 

read和readline 、readlines方法

读数据:使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(字符个数),如果没有传入num或者为负,那么就表示读取文件中所有的数据,read()将读取的数据以字符串的形式返回。注意:

如果使用read读了多次,那么后面继续使用read读取的数据是从上次读完后的位置开始的

注意:read ()方法默认会把文件的所有内容 一次性读取到内存,当然可以指定读取的字符数。如果文件太大,对内存的占用会非常严重。

readlines()可以按照行的方式把整个文件中的内容进行一次性读取,读取所有行(直到结束符 EOF)并返回列表,并且返回的是一个列表,其中每一行(按着换行符进行判断一行)的数据为一个元素。

readline(),对原文件的数据按行读取,(行的划分是\n).每次只读取一行。如果有多次读取的话,下面一次读取的偏移量是上面读取后的偏移量。

 

例4、读取test.txt文件中的文本4个字符

filename = 'test.txt'

f = open(filename,'r',encoding='utf-8') #打开文件

content=f.read(4)  #读取4个字符

print("读取的内容:%s"%content) 

f.close()

 

 

相关文章: