盏茶python(一) 语言特性及环境配置
盏茶python(二) 基本数据类型
盏茶python(三) 组合数据类型
盏茶python(四) 控制流
盏茶python(五) 函数
盏茶python(六) 类
盏茶python(七) 文件、异常和模块
本节我们将要讲解python关于文件使用、异常处理及模块化的部分内容。
1.文件读写
在实际使用中,大部分的信息都是通过文件的交互完成的,掌握文件的使用非常重要
1.1 文件的打开
文件的打开形式:
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
代码块
使用with的好处是当执行完毕后,自动对文件进行close操作,可以看到在打开文件的过程中,有三个重要元素,分别是文件路径,打开模式及字符编码方式。
(1)文件路径
文件路径分为绝对路径和相对路径,相对路径是指程序和文件在同一文件夹下的默认路径,可以进行简化,举例如下:
# 绝对路径
"c://test.txt"
"c:\test.txt"
#相对路径
"test.txt"
(2)打开模式
打开模式只打开文件是读取还是写入等方法,具体举例如下:
"r" 只读模式,如文件不存在,报错
"w" 覆盖写模式,如文件不存在,则创建文件,否则覆盖原文件
"x" 创建写模式,如文件不存在,则创建,如文件存在,报错
"a" 追加写模式,如文件不存在,则创建文件,否则在源文件后追加内容
"b" 二进制文件模式,不能单独使用,需要配合使用如"rb", "wb", "ab"等方法,且该模式不需要指定encoding
"t" 文本文件模式,默认值,需配合使用,如"rt", "wt", "at"等,可以简写不适用t
“+” 与"r", "w", "x", "a"配合使用,在原基础上,增加读写功能
注意若打开模式缺省,则默认为只读模式
(3)字符编码
字符编码中常用的是utf-8和gbk编码方式,其中utf-8包含全世界所有国家需要用到的字符,gbk编码方式用于专门解决中午呢编码问题。
注意:在windows系统下,默认设定为gbk编码方式。
1.2 文件的打开
文件的打开形式:
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
# 读取整个内容
text = f.read();
# 逐行进行读取
text = f.readline();
# 读入所有行,以每行为元素行为一个列表
text = f.readlines();
当文件比较大时,使用read()和readlines()占用内存较大,使用一个文件作为可迭代对象
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
for text in f:
print(text)
1.2 文件的写入
文件的打开形式:
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
f.write("something")
ls = ["1", "2"]
# 将一个元素为字符串的列表写入文件
f.writelines()
1.3 数据的存储与读取
常用的两种数据存储结构csv和json
对于csv格式,可以用excel打开,读取代码如下:
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
ls = []
# 逐行读取
for line in f:
# 去掉每行的换行符,用","进行分割
ls.append(line.strip("\n").split(","))
对于json格式,常被用来存储字典类型,读写代码如下:
import json
score = {"Peter": 100}
# 写入
# indent表示字符串换行+缩进
json.dump(score, f, indent=4. ensure_ascii=False)
# 读取
with open("文件路径", “打开模式”, encoding="字符编码方式") as f:
score = json.load(f)
for k, v in score.items():
print(k, v)
2.异常处理
在程序执行的过程中,常见的异常报错情况有:
除0报错——ZeroDivision
找不到可读文件——FileNotFoundError
值错误——ValueError
索引错误——IndexError
类型错误——TypeError
异常处理可以提高程序的稳定性和可读性,常见的异常处理方法:
try:
代码块
except 错误方法:
代码块
表示当try内的代码执行时,except不触发,如果try内的代码发生错误,则出发except中的代码块。
在错误方法中可以填入前面介绍过的所有异常情况,且有Exception作为任何报错的错误方法。
通过Exception引入一种捕获异常方法的方式:
try:
代码块
except Exception as e:
print(e)
在引入其他异常处理方法:
当try模块执行,else模块也会执行
try:
代码块
except 错误方法:
代码块
else:
代码块
无论try模块是否执行,finally模块也会执行
try:
代码块
except 错误方法:
代码块
finally:
代码块
3.模块介绍
模块是指已经被封装好,无需在二次开发,声明导入后可以直接使用的内容。
3.1 广义模块分类
时间库time
随即库random
容器数据类型collection
迭代器函数itertools
3.2 第三方库
数据分析numpy、pandas
数据可视化matplotlib
机器学习scikit-learn
深度学习tensorflow
3.3 自定义文件
单独py文件
包-多个py文件
当文件夹内有多个py文件,加入__int__.py文件即可
3.4 模块导入方法
导入方式如下:
import 模块名
from 模块性 import 类名或函数名
# 导入所有类和函数
from 模块性 import *