Python基础知识|043 from 库名 import 类,函数,方法

043 from 库名 import 类,函数,方法 导入库有2种方法:
方法1:import 库名
方法2:from 库名 import 类,函数,方法
【方法1:import 库名】
import 库名
对象=库名.类名( )
对象=库名.函数( )
对象.方法
【方法2:from 库名 import 类,函数,方法】
from 库名 import 类,函数,方法
对象=类名( )
对象=函数( )
对象.方法
from 库名 import 类,函数,方法 的优点是书写代码时可以省略库名。
【Python基础知识|043 from 库名 import 类,函数,方法】【温馨提示】
上面的方法都是工作薄对象的方法,不是类的方法。
1. import 库名
【任务】
1.在当前文件夹下新建【花名册】文件夹。
2.在【花名册】文件夹里新建3个工作薄,分别命名为【1班花名册】【2班花名册】【3班花名册】。

# 导入库 import os # 新建文件夹:【花名册】 # 库.函数(path) os.mkdir('花名册')# 导入库 import openpyxl# 新建3个工作薄 # 对象= 库.类 wb1 = openpyxl. Workbook( ) wb2 = openpyxl. Workbook( ) wb3 = openpyxl. Workbook( )# 保存3个工作薄 # 对象.方法(path) wb1. save('./花名册/1班花名册.xlsx') wb2. save('./花名册/2班花名册.xlsx') wb3. save('./花名册/3班花名册.xlsx')# 打开3个工作薄 # 对象= 库.函数 wb1 = openpyxl. load_workbook('./花名册/1班花名册.xlsx' ) wb2 = openpyxl. load_workbook('./花名册/2班花名册.xlsx' ) wb3 = openpyxl. load_workbook('./花名册/3班花名册.xlsx' )

运行代码后,1班、2班、3班工作薄新建成功。
2. from 库名 import 类,函数,方法
【任务2】
在【花名册】文件夹里新建3个工作薄,分别命名为【4班花名册】【5班花名册】【6班花名册】。
# 从openpyxl 库中导入Workbook类 load_workbook函数 from openpyxl import Workbook, load_workbook# 新建3个工作薄对象 # 对象=类() wb1 = Workbook( ) wb2 = Workbook( ) wb3 = Workbook( ) # 保存3个工作薄 # 对象.方法(path) wb2.save('./花名册/4班花名册.xlsx') wb3.save('./花名册/5班花名册.xlsx') wb3.save('./花名册/6班花名册.xlsx')# 打开3个工作薄 # 对象=函数(path) wb1 = load_workbook('./花名册/4班花名册.xlsx') wb2 = load_workbook('./花名册/5班花名册.xlsx') wb3 = load_workbook('./花名册/6班花名册.xlsx')

运行代码后,4班、5班、6班工作薄新建成功。
【温馨提示】
from openpyxl import Workbook, load_workbook
不可以写成
from openpyxl import Workbook, load_workbook, save
Workbook 是openpyxl库的类。
load_workbook 是openpyxl库的函数。
save是工作薄对象的方法,不是openpyxl库的方法。
3. import 和 from import 的区别


4. 用for循环+range对重复的代码进行优化
新建:wb1 = Workbook( )
保存:wb1.save(’./花名册/6班花名册.xlsx’)
打开:wb1 = load_workbook(’./花名册/6班花名册.xlsx’)
上述的代码中新建、保存、打开的动作都执行了3次。
相同的代码即重复的动作可以用for循环+range对代码进行优化。
【任务】
在【花名册】文件夹里新建3个工作薄,分别命名为【7班花名册】【8班花名册】【9班花名册】。
# 从openpyxl 库中导入Workbook类 load_workbook函数 from openpyxl import Workbook, load_workbookfori in range(7,10): path = './花名册/{}班花名册.xlsx'.format(i)# 新建3个工作薄对象 # 对象=类() wb = Workbook( )# 保存3个工作薄 # 对象.方法(path) wb.save(path)# 打开3个工作薄 # 对象=函数(path) wb = load_workbook(path)

运行代码后,工作薄新建成功。
path = ‘./花名册/{}班花名册.xlsx’.format(i)
也可以写成
path = ‘./花名册/%d班花名册.xlsx’%i
# 从openpyxl 库中导入Workbook类 load_workbook函数 from openpyxl import Workbook, load_workbook# 用for 循环控制循环次数 fori in range(10,14): # 存储每次需要的文件路径 path = './花名册/%d班花名册.xlsx'%i# 新建3个工作薄对象 # 对象=类() wb = Workbook( )# 保存3个工作薄 # 对象.方法(path) wb.save(path)# 打开3个工作薄 # 对象=函数(path) wb = load_workbook(path)

5. 用 from import 实现csv文件的读写
【任务】
1.在当前文件夹下新建【成绩表】文件夹。
2.在【成绩表】文件夹中新建3个CSV文件,分别命名为【X班成绩表.csv】。
3.用字典的形式向【X班成绩表.csv】中写入信息。
4.用字典的形式读取【X班成绩表.csv】中的信息。
5.将3个【X班成绩表.csv】的信息汇总到【总成绩表.csv】。
import os # 新建【成绩表】文件夹 os.mkdir('成绩表')# 从CSV库中导入DictWriter, DictReader类 from csv import DictWriter, DictReader # 设置表头 head = ['姓名','成绩']# 新建列表存储要写入的信息 # 列表的元素为字典 list1=[ {'姓名':'张三','成绩':'30'}, {'姓名':'李四','成绩':'40'}, {'姓名':'王五','成绩':'50'}, {'姓名':'赵六','成绩':'60'}, {'姓名':'孙七','成绩':'70'}, {'姓名':'周八','成绩':'80'} ]# 设置空列表存储读取的内容 dict_list = [ ] # for循环控制次数 for i in range(1,4) : # 字符串格式化得到文件的路径 path = './成绩表/%d班成绩表.csv'%i# 以末尾写入模式w创建CSV文件 with open (path,'w',encoding='utf-8',newline='') as f1 : # 创建CSV 文件对象=csv_target csv_target =DictWriter(f1,fieldnames=head) # 对象.方法()写入表头 csv_target.writeheader( ) # 对象.方法()写入字典 csv_target.writerows(list1[2*(i-1):2*i])# 以只读模式r读取CSV文件 with open (path,'r',encoding='utf-8') as f2 : csv_target = DictReader(f2) for row_dict in csv_target: print(row_dict) # 读取到的字典存储到列表中 dict_list.append(row_dict) # 以追加写入模式a创建CSV文件 with open ('./成绩表/总成绩表.csv','a',encoding='utf-8',newline='') as f3: # 对象=类() csv_target = DictWriter(f3,fieldnames=head) # csv对象.方法()写入表头 csv_target.writeheader( ) # 对象.方法()写入字典 csv_target.writerows(dict_list)

【终端输出】
{'姓名': '张三', '成绩': '30'} {'姓名': '李四', '成绩': '40'} {'姓名': '王五', '成绩': '50'} {'姓名': '赵六', '成绩': '60'} {'姓名': '孙七', '成绩': '70'} {'姓名': '周八', '成绩': '80'}

【知识回顾:列表的切片索引】
# 列表的索引从0开始编号 # 含前不含后即0含,2不含 list1 = [1,2,3,4,5,6] print(list1[0:2]) print(list1[2:4]) print(list1[4:6])

【终端输出】
[1, 2]
[3, 4]
[5, 6]
上述代码和下面的代码实现的效果是一样的。
list1 = [1,2,3,4,5,6] for i in range(1,4): print(list1[2*(i-1):2*i])

【终端输出】
[1, 2]
[3, 4]
[5, 6]
【用列表切片来控制写入的字典】
CSV文件写入代码中:
第1次写入list[0]list[1]=list[0:2]
第2次写入list[2]list[3]=list[2:4]
第3次写入list[4]list[5]=list[4:6]
切片索引用i表示:
list1[2*(i-1):2i]
i=1时[2
(1-1):21]=0:2
i=2时[2
(2-1):22]=2:4
i=3时[2
(3-1):2*3]=4:6
【温馨提示】
切片索引之间用英文冒号分隔,不用英文逗号。
初学者易犯错误是将
list[0:2]写成
list[0,2]

    推荐阅读