Python文件读取操作和异常处理
文章目录
文件的定义和类型
什么是文件呢?
- 文件是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列
- 文件是存储的一种
文件有哪些类型呢?
- 本质上所有文件以二进制储存,不过又可以分为文本文件和二进制文件
- 文本文件时由单一特定编码组成,如UTF-8编码
用于txt、py文件- 二进制文件直接由比特0和1组成,没有统一的字符编码
如png图片文件,avi视频文件
文件处理步骤
首先,想要操作文件必须了解文件的操作步骤,明白文件操作的流程。
那么文件操作有哪几个步骤呢?
文件处理可以分为三大步:
-
文件的打开
-
文件的具体操作
-
文件的关闭
文件的打开和关闭
文件的打开
文件打开有两种方式:
-
直接采用open(文件名称)打开
fileName = open('test1.txt') #注意:文件名称可以是文件相对与当前程序的路径,称为相对路径; #也可以是文件相对于电脑的路径,称为绝对路径。
-
采用with… as… 打开
filename = 'test1' with open(filename) as f: #文件操作代码
文件的关闭
文件打开后必须关闭文件。不过在python解析器中,当程序关后会自动关闭文件。
文件关闭语法 变量名.close()
fileName = open('test1.txt')
#文件操作代码
filename.close()
需要注意的是,采用with…as…方式打开的文件就不用我们在写关闭文件的代码。with…as…会自动在文件操作代码运行完成后关闭文件。
文件的操作
文件操作分为:读文件、写文件。
读文件
读文件有三种操作方式,分别是:
-
file.read(size)
- 读入全部内容,默认size=-1,如果size=n则读入前size长度
-
file.readline(size)
- 读入一行内容,默认size=-1,如果给出参数,则读入该行前size长度的内容
-
file.readlines(hint)
- 读入文件所有行,以每行为元素形成列表,默认hibt=-1,如果给出参数,则读入前hint行
写文件
写文件有两种操作方式外加一种辅助操作:
-
file.write(s)
- 向文件协议一个字符串或字节流
f.write('中国是一个伟大的国家!')
-
file.writeline(lines)
- 将一个元素全位字符串的列表写入文件,字符串拼接后写入
ls = ['中国', '法国', '美国'] f.write(ls) #中国法国美国
-
file.seek(offset)
-
改变当前文件操作指针的位置,offset含义如下: 0-文件开头;1-当前位置;2-文件结尾
f.seel(0)#回到文件开头 f.seel(1)#文件当前位置 f.seel(2)#回到文件结尾
-
文件写入和读取
fo = opne('test1.txt', 'w+')
ls = ['中国', '法国', '美国']
fo.writelines(ls)
fo.seek(0)
for line in fo:
print(line)
fo.close()
文件打开模式
文件打开模式有七种:
-
'r' 只读模式,默认值,如果访问到文件不存在,则返回FileNotFoundError一异常
-
'w'覆盖写模式,文件不存在则创建文件,如果文件存在,则完全覆盖
-
'x'创建写模式,文件不存在则创建文件,存在则返回FileExistsError
-
'a'追加写模式,文件不存在则创建文件,文件存在则在文件最后追加内容
-
'b'以二进制形式打开文件
-
't'以文本形式打开文件 默认模式
-
'+'与r/w/a/一同使用,在与原功能上增加读写功能
fileName = open('test1.txt') #默认使用文本形式和只读模式打开文件 fileName = open('test1.txt', 'rt')#文本制度模式打开文件 fileName = open('test1.txt', 'w')#文本形式,覆盖写模式打开问及那 fileName = open('test1.txt', 'a+')#文本形式,追加写模式+读文件 fileName = open('test1.txt', 'x')#文本形式、创建写模式 fileName = open('test1.txt', 'b')#二进制形式,只读模式 fileName = open('test1.txt', 'wb')#二进制形式,覆盖写模式 fileName.close()
文件的全文本操作
-
方法一:
fname = input('请输入要打开文件的名称:') fo = open(fname, 'r') txt = fo.read() #对全文本txt进行处理 fo.close() # 一次读入,统一处理,文本文件内容大消耗大
-
方法二:
fname = input('请输入要打开文件的名称:') fo = open(fname, 'r') txt = fo.read(2) while txt != '': #对txt进行处理 txt = fo.read(2) fo.close() # 分阶段,按数量读入,逐步处理 处理大文件更加可行有效
分行储存的文件读写
-
逐行遍历文件
fname = input('请输入要打开文件的名称:') fo = open(fname, 'r') for line in fo.readlines() print(line) fo.close()
异常处理
异常的定义
什么是异常呢?
在程序运行过程中,不可避免的出现一些错误 例如用没赋值的变量等
异常的处理
首先我们要明白,
程序运行时出现异常、目的不是终止程序
python是希望出现异常时,我们可以编写代码来对异常进行处理
异常的传播
当在函数中出现异常时,如果在函数中处理了异常,则不会在继续传播
如果函数中没有处理,则异常会像函数掉用传播
如果函数点用处处理了异常则不会传播
如果没有处理则会继续传播
知道传递到全局作用域(主模块)如果依然没有处理,则程序会终止
def fn():
print('hello fn')
print(10/0)
def fn2():
print('hello fn2')
fn()
def fn3():
print('hello fn3')
fn2()
异常处理方法
异常的处理可以使用如下语法:
try:
#可能出现异常的代码块
except:
#出现异常后执行的代码块
finally:
#管有没有异常都会执行的代码块
print('异常出现前')
try:
print(a)
print(10/0)
except Exception as e:
#except后面如果跟异常对象则默认捕获所有异常
#由于Exception是所有异常对象的父对象所以except后面跟Exception捕获所有异常
print(e,type(e))
else:
print('yi')
finally:
print('无论是否出现异常,finally都会执行')