一文看懂Python(五)-----文件篇

一、前言

文件操作在所有编程语言中都扮演着一个非常重要的角色,编程语言中的文件操作都大同小异,无非就是读取和写入,本文会详细介绍Python的相关文件操作,包括常用的方法、方法如何使用、一些小的案例以及with语句的使用供大家学习!

二、方法及案例

2.1 文件操作的答题步骤

首先我们来总结一下文件操作的大体步骤:

  • 1.打开文件
  • 2.对文件进行操作,或者是读取,或者是写入
  • 3.关闭文件
    三个步骤缺一不可。

2.2 常用方法介绍

open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

  • Note:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
    open()方法常用形式是接收文件名(file)和模型(mode)两个参数,如下所示:
open(file, mode='r')

常见的打开模式有:

打开模式 执行操作
‘r’ 以只读方式打开文件(默认)
‘w’ 以写入的方式打开文件,会覆盖已存在的文件
‘x’ 如果文件已经存在,使用此模式打开将引发异常
‘a’ 以写入模式打开,如果文件存在,则在末尾追加写入
‘b’ 以二进制模式打开文件
‘t’ 以文本模式打开(默认)
‘+’ 可读写模式(可添加到其他模式中使用
‘U’ 通用换行符支持
  • 默认为文本模式,如果要以二进制模式打开,加上 b 。

常使用的方法有:

方法 方法介绍
f.close() 关闭文件
f.read([size = -1]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
tell() 返回文件指针当前在文件中的位置
seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
write(str) 将字符串str写入文件
readline([size = -1]) 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象

2.3 常用方法介绍

首先我们使用一段《三国演义》中的一段作为案例文件data.txt。
“ 滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。
–调寄《临江仙》
第一回 宴桃园豪杰三结义 斩黄巾英雄首立功
话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。推其致乱之由,殆始于桓、灵二帝。桓帝禁锢善类,崇信宦官。及桓帝崩,灵帝即位,大将军窦武、太傅陈蕃共相辅佐。时有宦官曹节等弄权,窦武、陈蕃谋诛之,机事不密,反为所害,中涓自此愈横。
建宁二年四月望日,帝御温德殿。方升座,殿角狂风骤起。只见一条大青蛇,从梁上飞将下来,蟠于椅上。帝惊倒,左右急救入宫,百官俱奔避。须臾,蛇不见了。忽然大雷大雨,加以冰雹,落到半夜方止,坏却房屋无数。建宁四年二月,洛阳地震;又海水泛溢,沿海居民,尽被大浪卷入海中。光和元年,雌鸡化雄。六月朔,黑气十余丈,飞入温德殿中。秋七月,有虹现于玉堂;五原山岸,尽皆崩裂。种种不祥,非止一端。帝下诏问群臣以灾异之由,议郎蔡邕上疏,以为蜺堕鸡化,乃妇寺干政之所致,言颇切直。帝览奏叹息,因起更衣。曹节在后窃视,悉宣告左右;遂以他事陷邕于罪,放归田里。后张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人朋比为奸,号为"十常侍"。帝尊信张让,呼为"阿父"。朝政日非,以致天下人心思乱,盗贼蜂起。”

  • 打开一个文件
f = open('data.txt','r',encoding = 'utf-8')
  • f.read([size = -1]) : 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回。
f.read(5)
  • readline([size = -1]) :从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符 |
f.readline()
  • tell() :返回文件指针当前在文件中的位置
f.tell()
  • seek(offset,from) :在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.seek(45,0)
  • Note:在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。

  • write(str) :将字符串str写入文件

f = open('E:\\test.txt','w')
f.write('我爱kk')
f.close()
  • writelines(seq) :向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f = open('E:\\test.txt','a')
f.writelines('I love KK!!!0000')
f.close()

2.3 案例:

将datatxt文件中的内容写入到另一个文件data_copy.txt文件中。

fr = open('data.txt','rb') # 打开文件data.txt
context = fr.read() # 读取data.txt文件内容
fw = open('data_copy.txt','wb') # 打开文件data_copy.txt
fw.write(context) # 写入data_copy.txt文件
fw.close()
fr.close()

三、简洁的with语句的使用

3.1 文件读写初级

f = open('data.txt','w')
	for each_line in f:
		print(each_line)
f.close()

3.2 文件读写中级

try:
	f = open('data.txt','w')
	for each_line in f:
		print(each_line)
except OSError as reason:
	print('出错了:'+str(reason))
finally:
	f.close()

3.3 文件读写高级

try:
	with open('data.txt','w')
	for each_line in f:
		print(each_line)
except OSError as reason:
	print('出错了:'+str(reason))

猜你喜欢

转载自blog.csdn.net/dongjinkun/article/details/113620451