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]
推荐阅读
- python_001.基础语法
- 深度学习Pyrotch|[二十八]深度学习Pytorch-图像分类Resnet18
- python语言学习|python学习001(语法基础篇)
- 3. Python3 基础语法
- 其他|用pywinhook或pyhook监听鼠标事件
- 点滴|Tensorflow深度学习环境搭建
- 深度学习笔记|深度学习笔记001-Python基础语法
- python|Python教程(批量合成PDF)
- Jinja2基本知识与实操(文字版)