043 from 库名 import 类,函数,方法

043 from 库名 import 类,函数,方法

导入库有2种方法:
方法1:import 库名
方法2:from 库名 import 类,函数,方法

【方法1:import 库名】
import 库名
对象=库名.类名( )
对象=库名.函数( )
对象.方法

【方法2:from 库名 import 类,函数,方法】
from 库名 import 类,函数,方法
对象=类名( )
对象=函数( )
对象.方法

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_workbook

for  i 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 循环控制循环次数
for  i 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]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值