python基础⑤-数据文件的读写操作、异常的抛出

Auth:焱讲       Date:2019/07/24       Cat:文章精选       Word:共5691字

已关闭评论

导读:捕获异常的方法

#捕获异常   (格式)
'''
try:
       执行语句、判断语句、单独变量等等
except 异常错误名:     #输入多个错误,使用[ValueError,Error]间隔开来
       如果try语句报错,则执行该语句部分
else:(可选语句)          
       如果上述try语句没有报错,则执行该语句部分
finally:(可选语句)(强制执行语句)
       上述try语句无论是否报错,都要执行该执行的部分


#循环案例
''''''
for i in range(1,10):
       print("你好")
       print(i)
'''
try:
       mobile = int(input('请输入正确的手机号'))
       name = input("请输入姓名")

#案例
except ValueError:
       print("请输入正确的手机号")
else:
       print("手机号输入正确")
finally:
       print("无论上述代码对错,均运行此语句")


干货:
print(u"文本")  #Unicode的缩写,将UF-8文本
print(r"文本")#取消转义字符
路径中使用(D:\\Program Files (x86)\\KuGou\\nKGMusic\\abc.txt)  #使用双斜杠(\\)效果与上述r相同


一、数据的读取

1、数据的读取

  • 对文件操作之前需要用open()函数打开文件

#文件的创建
#a = open(r"F:\abc.txt","w")              #新建文件(如果有,则覆盖原文件)
a = open(r"F:\abc.txt","r")                 #打开文件(如果没有,则提示文件未找到)
b = a.read()         #打开文件
print(b)             #将打开的文件打印
a.close()            #关闭打开的文件(一定要关闭)
  • mode参数中的r指读出,w指写入

  • 打开之后将返回一个文件对象(file object),后续对文件内数据的操作都是基于这个文件对象的方法(method)来实现的

  • 对文件数据的读取是用的read()方法,read()方法将返回文件中的所有内容

  • 用print打印所有内容会显示,记得每次用完文件后,都要关闭文件close()。否则,文件就会一直被Python占用,不能被其他进程使用

2、在read中,加入数字,可指定读取的字符数

  • #w:写入   可以往指定文件写入内容如果没有该文件,就重新创建文件,如果有该文件,就替换创建全新文件

  • #r:读取    读取指定文件内容,不可以修改,如果没有该文件,则提示文件未找到(filenot founderror)

    • content = f.read(5)


#b=a.readline()   #读取第一行数据
#c=a.read()    #读取剩余全部数据
d=a.readlines()   #读取全部数据,把数据用列表的形式进行展示,包含换行转义字符
print(d)
a.close()

3、文本文件的读取

  • 通过open()函数打开文件,返回文件对象

  • 对文件对象进行读取操作,除了前面介绍的read()之外还有两种读取数据的方法:readline()是每次读入一条数据的方式,readlines()是一次性读入文件所有数据

a = open(r'F:\abc.txt','r')
b = a.readline()   #读取第一行内容
print(b)

c = a.read()         #读取剩余的全部内容
print(c)
a.close()

python基础⑤-数据文件的读写操作、异常的抛出 - 第1张图片

5、文本文件的读取(常用控件)

  • file.read([size]):size未指定则返回整个文件,如果文件大小>2倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

  • file.readline():返回一行。

  • file.readlines([size]):返回包含size行的列表,size未指定则返回全部行。

  • for line in f: print line:通过迭代器访问。

  • f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。

  • f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。

  • f.seek(偏移量,[起始位置]):用来移动文件指针。

    • -偏移量:单位为比特,可正可负

    • -起始位置:0-文件头,默认值;1-当前位置;2-文件尾

  • f.close()关闭文件

6、常用的

模式
描述
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
Wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
W+
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
Wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

数据文件的读写操作.py

#文件的创建
#a = open(r"F:\abc.txt","w")              #新建文件(如果有,则覆盖原文件)
a = open(r"F:\abc.txt","r")                 #打开文件(如果没有,则提示文件未找到)
b = a.read()         #打开文件
print(b)             #将打开的文件打印
a.close()            #关闭打开的文件(一定要关闭)

#文件的写入
a = open(r'F:\abc.txt','w')
a.write("星星点灯照\n亮我的家园\n星星之火\n可以燎原")
a.close()

#读取文件数据
a = open(r'F:\abc.txt','r')
b = a.readline()   #读取第一行内容
print(b)

c = a.read()         #读取剩余的全部内容
print(c)
a.close()

#读取文件数据(循环语句)
a = open(r'F:\abc.txt','r')
for i in range(1,4):      #循环读取第一至第四行数据
       b = a.readline()     #读取第一行的数据
       print(b)

a.close()

作业:

#(2) 在D盘下创建一个文件Blowing in the wind.txt,即‘D:\Blowing in the wind.txt’
b = open(r'D:\Blowing in the wind.txt','w')


t1 = 'How many roads must a man walk down'
t2 = 'Before they call him a man'
t3 = 'How many seas must a white dove sail'
t4 = 'Before she sleeps in the sand'
t5 = 'How many times must the cannon balls fly'
t6 = "Before they're forever banned"
t7 = 'The answer my friend is blowing in the wind'
t8 = 'The answer is blowing in the wind'
b.write(t1+'\n'+t2+'\n'+t3+'\n'+t4+'\n'+t5+'\n'+t6+'\n'+t7+'\n'+t8+'\n')
b.close()

第七讲 文件的打开作业(2019年7月24日).py

python基础⑤-数据文件的读写操作、异常的抛出 - 第2张图片

二、错误和异常(异常处理、抛出异常

2.1    什么是异常?

  • 异常处理就是我们在写 Python时,经常看到的报错信息,例如 Name Error、Type error 、ValueError等,这些都是异常。

  • 异常是一个事件,该事件会在程序执行过程中发生,一般情况下,在python中无法处理程序时就会发生异常,当 Python脚本发生异常时,我们需要捕获并处理异常,否则程序就会终止执行。

2.2    try-except捕获异常

  • python的解释器可以捕获异常。不过等它捕获到,我们的程序也就结束了。所以我们要在 python解释器之前用自己的代码捕获这些异常处理掉。

    • 注意:python的ty-except,还是java的ty-catch都只能捕获运行时异常。如果代码本身就是错的根本就不行更别谈怎么捕获异常

  • python基础⑤-数据文件的读写操作、异常的抛出 - 第3张图片

2.3    else关键字

  • 为了避免try语句块过长。我们只把可能出现异常的语句写到try里面,如果我们希望没有出错的时候执行其他代码,可以写到else里面:

    • python基础⑤-数据文件的读写操作、异常的抛出 - 第4张图片

2.4    异常处理方式

  • python基础⑤-数据文件的读写操作、异常的抛出 - 第5张图片

2.5    finally清理

  • try语句有另种可选的finally从句,用于自定义一些尾清理工作。与else从句的区别在于:else语句只在没有异常发生的情况下执行,而 finally语句则不管异常发生与否都会执行。

    • python基础⑤-数据文件的读写操作、异常的抛出 - 第6张图片

2.6    抛出异常处理方式

  • 在开发时,如果满足特定业务需求时,希望抛出异常,可以

    • 创建一个 Exception的对象

    • 使用 raise关键字抛出异常对象

python基础⑤-数据文件的读写操作、异常的抛出 - 第7张图片

2.   常见的错误和异常

异常名称
描述
BaseEXcepton
所有异常的基类
SystemExit
解释器请求退出
Kevboardnterrunt
用户中断执行(通常是输入^C)
Excepton
常规错误的基类
Stoplteration
迭代器没有更多的值
GeneratorExit
生成器(generaor)发生异常来通知退出
StandardError
所有的内建标准异常的基类
ArithmeticError
所有数值计算错误的基类


异常名称
描述
FloatingPointError
浮点计算错误
OverflowError
数值运算超出最大限制
ZeroDivisionError
除(或取模)零(所有数据类型)
AssertonError
断言语句失败
AttributeError
对象没有这个属性
EOFError
没有内建输入,到达EOF标记
EnvironmentError
操作系统错误的基类
IOError
输入/输出操作失败
异常名称
描述
OSError
操作系统错误
WindowsError
系统调用失败
importError
导入模块/对象失败
LookupError
无效数据查询的基类
indexError
序列中没有此索引(index)
KeyError
映射中没有这个键
MemoryError
内存溢出错误(对于Python解释器不是致命的)
NameError
未声明/初始化对象(没有属性)
异常名称
描述(加粗字体表示常用方法)
UnboundLocalError
访问未初始化的本地变量
ReferenceError
弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntmeError
一般的运行时错误
NotlmplementedError
尚未实现的方法
SyntaxError
Python语法错误
IndentationError
缩进错误
TabError
Tab和空格混用
SyStemError
一般的解释器系统错误
异常名称
描述
TypeError
对类型无效的操作
ValueError
传入无效的参数
UniCodeError
Unicode相关的错误
UnicodeDecodeError
Unicode解码时的错误
UniCodeEncOdeError
Unicode编码时错误
UnicodeTranSlateError
Unicode转换时错误
Warning
警告的基类
DeprecatOnWarning
关于被弃用的特征的警告
异常名称
描述
FutureWarinng
关于构造将来语义会有改变的警告
overflowWarning
旧的关于自动提升为长整型(long)的警告
PendingDeprecationWaning
关于特性将会被废弃的警告
RuntimeWarning
可疑的运行时行为(runtime behavior)的警告
SyntaxWarning
可疑的语法的警告
Usewarnng
用户代码生成的警告

      

评论已关闭!