首页 > 技术文章 > Python 基础入门 8 异常处理及文件处理

hjlin 2019-04-01 15:30 原文

"""
异常处理:当程序某些原因出错,程序忽略错误并向下执行,其格式如下
try:
语句
except [错误码1 as e]:
语句
except [错误码2 as e]: #若没有错误码, except的作用是只要try内的语句出错,便执行except语句
语句
[else: #当try内语句出错且以上的except语句不执行时执行
语句
]或者
[finally: #不管try里的语句是否出错都会执行
语句
]
BaseException 一个异常类,里面包含所有的错误
异常处理可以跨多行处理
"""
try:
print(1/0)
except ZeroDivisionError as e:
print("出现了错误")
else:
print("没有对应的错误码")


"""
断言:assert (判断出错的表达式),str
相当于简单的异常处理,执行到错误代码时,控制台会报错,但会打印str
"""
def func(num,div):
assert (div != 0) , "div不能为0"
print(num / div)

func(3,0)


#file 文件处理
"""
写文件,过程:
1.打开文件
变量 = open(path,flag[,encoding][,error]) 注意:如果用二级制格式(wb,rb)打开文件,就没有编码这说法
path:要打开文件的路径
flag:打开文件的方式,有如下
r 以只读的方式打开文件,文件的描述符放在文件开头
rb 以只读的方式以及二级制格式打开一个文件,文件的描述符放在文件开头
r+ 以读写的方式打开文件,文件的描述符放在文件开头
w 以写入的方式打开文件,文件的描述符放在文件开头,如果这个文件存在并且不是空内容,则写入时会覆盖内容;如果文件不存在,则创建一个文件
wb 以写入的方式以及二级制格式打开一个文件,文件的描述符放在文件开头,如果这个文件存在并且不是空内容,则写入时会覆盖内容;如果文件不存在,则创建一个文件
w+ 以读写的方式打开文件,文件的描述符放在文件开头,如果这个文件存在并且不是空内容,则写入时会覆盖内容;如果文件不存在,则创建一个文件
a 以写的方式打开文件,如果文件存在,则文件描述符放在末尾
a+ 以读写的方式打开文件,如果文件存在,则文件描述符放在末尾
encoding:编码方式 我们一般用的时utf-8以及GDK,默认是GDK,如是用什么编码写入文件,就需要用什么编码打开文件
errors:错误处理 ignore 忽略错误
2.文件操作
#读文件 注意:若是以二进制格式打开的文件,读取内容需要解码
变量.read([int]) 读取前int个字符,并将描述符移动int下(字符包括转移字符),默认是文件的总字符数. 不适用读取大文件
变量.readline([int]) 读取一行前的int个字符,并将描述符移动int下(若int超过该行读取字符数,返回起读位到该行的最后一个字符(包括转义字符))
变量.readlines() 读取文件所有的行数并以list形式返回
变量.readlines([int])

#写文件 注意:若是以二进制格式打开的文件,写入内容要将str编码
变量.write(str) 将str写入缓冲区,等文件关闭后或是等缓冲区满了后写入文件中

#其他
变量.flush() 刷新缓冲区,作用立即将缓冲区的数据写入文件中
变量.seek(int) 将描述符移动到指定int的位置,若int大于整个文件的总字符数,相当于描述符放到了结尾,读不出内容
3.关闭文件
变量.close()

简易打开关闭文件写法格式如下:
with open(part,flag,encoding,errors) as 变量:
文件读写语句/语句块
"""

path= r"D:\programme\Python\file\test.txt"
path1 = r"D:\programme\Python\file\test1.txt"
try:
w =open(path,"r")
# print(w.read(10))
# print(w.readline(10))
# print(w.readline())
print(w.readlines())
finally:
w.close()
print("====================================")
with open(path,"r") as f:
f.seek(1000)
print("**"+f.read(10)+"**")
# print(f.readline(10))

with open(path1,"w") as file1:
file1.write("I am a good man")

"""
文件数据持久性模块
作用:将list,tuple,dict,set等数据以二进制的形式读出或者写入文件
要导入pickle包
pickle.dump(obj,文件对象) 将obj以二进制的形式写入文件
pickle.load(文件对象) 以二进制的形式进行读取并返回对应的obj数据类型
pickle.
"""
import pickle
myList =[1,"2",[1,3,4],("1","2","3"),{"key":"value"}]
path1 = r"D:\programme\Python\file\test2.txt"
try:
file1 = open(path1,"wb")
pickle.dump(myList,file1)
finally:
file1.close()

with open(path1,"rb") as file1:
print(pickle.load(file1))

推荐阅读