Python文件处理

本文介绍了如何在Python中处理文本文件,包括使用open函数的不同模式打开文件,如读模式、写模式、追加模式,以及如何进行读取、写入和关闭文件,强调了使用with关键字进行上下文管理以确保文件正确关闭。
摘要由CSDN通过智能技术生成

 

 

文件就像一个仓库,可以存储各种类型的数据。根据用途可以将文件分为数 据库文件、图像文件、音频文件、视频文件、文本文件等。本节主要介绍文本文 件的处理。在文本文件中存储的是常规字符串,由文本行组成,每行通常由换行 符“\n” 结尾。

对于文本文件来说,通常的操作流程为打开文件并创建对象,对该文件内容 进行读取、写入、删除、修改等操作,关闭并保存文件。

1.打开文件并创建对象

在Python中内置了文件对象,通过open() 函数就可以指定模式打开指定文 件,并创建文件对象,该函数的格式如下:

   open(file[, mode= 'r '[, buffering=-1]])                                                     

其中各参数的含义如下:

·file :指定要打开或者创建的文件的名称,如果该文件不存在于当前目录 中,则需要明确指出绝对路径。

·mode :指定打开文件后的处理方式,其中包括读模式、写模式、追加模 式、二进制模式、文本模式、读写模式等。

·buffering:指定读写文件的缓冲模式,数值为0表示不缓存,数值为1表示使 用行缓存模式,数值大于1表示缓冲区的大小,默认值为-1 。二进制文件和非交互 文本文件以固定大小的块为缓冲单位,等价于io。

2.对文件内容进行操作

对文件内容进行的操作包括:文件的读取、写入、追加,以及设置采用二进 制模式、文本模式、读写模式等。下面针对读写操作进行详细讲解。

(1)向文本文件中写入内容

如果需要向文本文件中写入内容,在打开文件时就需要指定文件的打开模式 为写模式。应根据不同的开发需求选取不同的写入模式:

·w :写入模式。如果文件已经存在,则先清空文件内容;如果文件不存在, 则创建文件。

 

 

 

 

 

·x :写入模式,创建新文件,如果文件已经存在,则抛出异常。

·a :追加模式,也是写入模式的一种,不覆盖文件的原始内容。

例如,创建demo文件并写入“hello world!ℽ , 此时可以选用w模式。

 

>>> s = 'hello world! \n '

>>> f = open( 'demo .txt ', 'w ')

>>> f.write(s)

>>> f.close()

打开文件,发现在根目录中已经生成文件demo.txt ,内容为“hello world!”。

再例如,向已经存在的demo.txt文件中写入“hello China!”且不清空原始内 容,此时可以选用a模式打开文件。

>>> s = 'hello China ! '

>>> f = open( 'demo .txt ', 'a ')

>>> f.write(s)

>>> f.close()

打开根目录下的demo.txt文件,发现文件内容中增加了“hello China!”字样。

(2)读取文件中的内容

有时需要加载文本中的某行或者全部内容,此时就需要用到文本的读取操 作:

·r :读模式(默认模式,可以省略),如果文件不存在,则抛出异常。

· + :读写模式(可与其他模式组合使用)。

例如,读取根目录下demo.txt文件的第一行内容:

>>> f = open( 'demo .txt ', 'r ')

>>> print(f.readline())

运行结果:

hello world!

再例如,读取根目录下demo.txt文件的所有内容:

 

 

 

 

 

 

>>> f = open( 'demo .txt ', 'r ')

>>> print(f.read())

 

运行结果:

hello world!

hello China !

3.关闭文件对象

当操作完文件内容以后,一定要关闭文件对象,这样才能确保所做的修改都 保存到了文件当中,如下所示:

f.close()

文件操作一般都要遵循“打开 →读写 →关闭” 的基本流程,但是如果文件读写 操作代码引发了异常,就很难保证文件能够被正常关闭。可以使用上下文管理关 键字with来避免产生这个问题。关键字with能够自动管理资源,总能保证文件正  确关闭,并且可以在代码执行结束后自动还原开始执行代码块时的现场。下面用 一个示例来说明with的使用方法。

例如,利用with关键字向文件demo.txt文件中继续添加“hello ms08067”:

>>> with open( 'demo .txt ', 'a ') as f :

. . .     f.write( 'hello ms08067 ')

...

运行结果:

hello world!

hello china !

hello ms08067

 

 

 

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值