一、模块
一个.py 文件就是一个模块,模块是含有一系列数据,函数,类等的程序。
1、模块导入
1.1、impotrt 模块名称 [ as 别名]
import nunpy as np
1.2、form 模块名 import 模块内属性名 [ as 别名]
from datetime import datetime as dt
1.3、from 模块名 import *
将该模块下所有属性、方法等内容导入,在引用文件内直接使用具体名称。
2、os模块
import os
getcwd() :获取当前工作目录
chdir():更改工作目录到指定参数内容
listdir():参数目录的最后一个文件夹的所有文件
split():将最终文件与目录分开输出(元组的第一个参数为目录,第二个参数为文件名称)
rmdir():删除目录
remove():删除参数指定的文件
二、包
文件夹形式的内容,包含一个固定的__init__.py文件。
1、包导入
import 包名 [as 包别名]
import matplotlib
一般都是直接到包内的某个模块 (import matplotlib.pyplot as plt)
2、第三方包
使用 pip 安装
三、异常语句
1、try
捕获异常,得到异常通知,将程序由异常状态变为正常状态
except 子句可以有 1个或多个
except: 不给错误类型,可以匹配全部的错误类型
else 子句里的语句会在 没有错误发生时执行,当处于异常时不执行
finally 子句里的语句,无论何时都执行
try:
可能发生异常的语句块
except 错误类型1 [as 变量名1]:
异常处理语句块1
except 错误类型2 [as 变量名2]:
异常处理语句块2
...
except 错误类型n [as 变量名n]:
异常处理语句块n
except:
异常处理语句块other
else:
未发生异常的语句
finally:
最终的处理语句
def exception_test(a=0):
try:
b = 1 / a
except:
print(f"分母异常")
finally:
print('finally')
exception_test(5) # 不提示
exception_test(0) # 提示
2、raise
抛出一个错误,让程序进入异常状态
def raise_test(a, b):
if b == 0:
raise Exception("除数为0")
return a/braise_test(1, 0) # 除数为0
3、常用错误类型
错误类型 | 说明 |
---|---|
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
ValueError | 传入无效的参数 |
AssertionError | 断言语句失败 |
StopIteration | 迭代器没有更多的值 |
IndexError | 序列中没有此索引(index) |
IndentationError | 缩进错误 |
OSError | 输入/输出操作失败 |
ImportError | 导入模块/对象失败 |
NameError | 未声明/初始化对象 (没有属性) |
AttributeError | 对象没有这个属性 |
四、文件操作
1、打开文件
open(name, mode,encoding):name 为文件名称;mode 为操作方法;encoding 控制格式
file = open('test.txt', 'r', encoding='utf-8')
x = file.read()
print(file)"""
1.第一行内容
2.第二行内容
3.第三行内容"""
file = open('test.txt', 'w', encoding='utf-8')
file.write('重新写入的内容')"""
文件内就只有"重新写入的内容"
若在py文件下没有该文件,则创建文件
"""
file = open('test.txt', 'a', encoding='utf-8')
file.write('重新写入的内容')"""
文本变为:
1.第一行内容
2.第二行内容
3.第三行内容重新写入的内容若在py文件下没有该文件,则创建文件
"""
2、读取文件
read():在打开文件后,就可以获取文件内的信息
file = open('test.txt', 'r', encoding='utf-8')
x = file.read()
print(file)"""
1.第一行内容
2.第二行内容
3.第三行内容"""
3、写入文件
模式为 w 或 a ;
file = open('test.txt', 'w', encoding='utf-8')
file.write('重新写入的内容')"""
文件内就只有"重新写入的内容"
若在py文件下没有该文件,则创建文件
"""
file = open('test.txt', 'a', encoding='utf-8')
file.write('重新写入的内容')"""
文本变为:
1.第一行内容
2.第二行内容
3.第三行内容重新写入的内容若在py文件下没有该文件,则创建文件
"""
4、关闭文件
在操作文件后,进行关闭,否则可能会被后面的代码影响文件
5、with 方法
with open("test.txt", "a", encoding='utf-8') as file:
file.write('重新写入的内容')
五、json解析
import json
json 与字典格式高度相似,都是键值对,但json的键必须为字符串。
python 中的空值为None,json中为null
1、序列化与反序列化
dumps 序列化就是将字典转成json字符串;loads 反序列化就是将json字符串转化成字典。
import json
data = {'name': 'zhangsan',
'age': 18,
'hobby': ['football', 'music', None]
}
json_str = json.dumps(data)
print(json_str, type(json_str))
#{"name": "zhangsan", "age": 18, "hobby": ["football", "music", null]} <class 'str'>
data1 = json.loads(json_str)
print(data1, type(data1))
#{'name': 'zhangsan', 'age': 18, 'hobby': ['football', 'music', None]} <class 'dict'>
2、存放和读取
dump 将指定内容存放到指定文件;load从指定文件获取内容(都需要搭配open使用)。
import json
data = {'name': 'zhangsan',
'age': 18,
'hobby': ['football', 'music', None]
}
json.dump(data, open('test.json', 'w', encoding='utf-8'))with open('test.json', 'r', encoding='utf-8') as f:
data1 = json.load(f)
print(data1)# {'name': 'zhangsan', 'age': 18, 'hobby': ['football', 'music', None]}