第九章---python中的模块和包

🌞欢迎来到机器学习的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年3月12日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

        🍈 模块和包

🍊什么是包

🍋常见的python模块

🍈 一、模块和包

什么是模块

Python 中,⼀个 .py ⽂件就可以称之为 ⼀个模块(Module
模块分类
模块分为三种:
内置标准模块
(⼜称标准库)执⾏ help(‘modules’) 查看所有 python ⾃带模块列表
第三⽅开源模块
可通过 pip install 模块名 联网安装
其中plotly是我需要安装的模块名。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple plotly

⾃定义模块

test.py

import my_module
my_module.sayhi("qinyun")

my_module.py

print("my first module")
def sayhi(name):
    print("大家好,我的名字是{0}".format(name))

结果

my first module
大家好,我的名字是qinyun

模块导入 & 调用

 import+模块名,这种方式会导入m2模块的所有元素在访问时, 需要加上前缀"m2."

 

 

注意:模块⼀旦被调用,即相当于执行了另外⼀个py⽂件里的代码。
# 导入sys整个模块
import sys
# 使用sys模块名作为前缀来访问模块中的成员
print(sys.argv[0])


#结果
C:/Users/Administrator/Desktop/test.py
sys 模块下的 argv 变量用于获取运行 Python 程序的命令行参数,其中 argv[0] 用于获取当前 Python 程序的存储路径
等价于
# 导入sys模块的argv成员
from sys import argv
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])

模块的查找路径

         有没有发现,⾃⼰写的模块只能在当前路径下的程序⾥才能导⼊,换⼀个目录再导⼊自己的模块就报错说找不到了, 这是为什么? 这与导⼊模块的查找路径有关模板的查找路径。
import sys
print(sys.path)

['C:\\Users\\Administrator\\Desktop', 
 'C:\\Users\\Administrator\\Desktop', 
 'C:\\Program Files\\Python37\\python37.zip', 
 'C:\\Program Files\\Python37\\DLLs', 
 'C:\\Program Files\\Python37\\lib', 
 'C:\\Program Files\\Python37', 
 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python37\\site-packages',
 'C:\\Program Files\\Python37\\lib\\site-packages']
输出(注意不同的电脑可能输出的不太⼀样)
你导⼊⼀个模块时, Python 解释器会按照上⾯列表顺序去依次到每个目录下去匹配你要导⼊的模块名, 只要在⼀个目录下匹配到了该模块名,就⽴刻导入,不再继续往后找。
注意列表第⼀个元素为空,即代表当前⽬录,所以你⾃⼰定义的模块在当前⽬录会被优先导⼊。 我们自己创建的模块若想在任何地方都能调⽤,那就得确保你的模块⽂件⾄少在模块路径的查找列表 中。 我们⼀般把自己写的模块放在⼀个带有“site-packages”字样的⽬录⾥,我们从网上下载安装的各种第三 方的模块⼀般都放在这个目录。

3方开源模块安装

可以直接通过 pip 安装
pip3 install paramiko #paramiko 是模块名pip命令会⾃动下载模块包并完成安装。
软件⼀般会被⾃动安装你 python 安装⽬录的这个⼦⽬录⾥
/your_python_install_path/3.6/lib/python3.6/site-packages
pip 命令默认会连接在国外的 python 官⽅服务器下载,速度⽐较慢,你还可以使⽤国内的⾖瓣源,数据 会定期同步国外官网,速度快好多 -i 后⾯跟的是⾖瓣源地址 —trusted-host 得加上,是通过⽹站 https 安全验证⽤的
pip install -i http://pypi.douban.com/simple/sayhi --trusted-host
pypi.douban.com #sayhi是模块名
使用
下载后,直接导⼊使用就可以,跟⾃带的模块调用的方法无差。

🍊包和库

其实,一个包就是一个文件目录,你可以把同一个业务线的文件放在一起


🍋常见的python模块

系统调用 OS 模块
os 模块提供了很多允许你的程序与操作系统直接交互的功能
>>> import os
>>> os.getcwd()#当前项目的路径
'D:\\pythonProject6'
>>> os.listdir()#当前项目的文件
['.idea', 'index.html', 'main.py', 'venv']
import os
得到当前⼯作⽬录,即当前Python脚本⼯作的⽬录路径: os.getcwd()
返回指定⽬录下的所有⽂件和⽬录名:os.listdir()
函数⽤来删除⼀个⽂件:os.remove()
删除多个⽬录:os.removedirs(r“c:\python”)
检验给出的路径是否是⼀个⽂件:os.path.isfile()
检验给出的路径是否是⼀个⽬录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:os.path.exists()
返回⼀个路径的⽬录名和⽂件名:os.path.split() e.g
os.path.split('/home/swaroop/byte/code/poem.txt') 结果:
('/home/swaroop/byte/code', 'poem.txt')
分离扩展名:os.path.splitext() e.g os.path.splitext('/usr/local/test.py')
 结果:('/usr/local/test', '.py')
获取路径名:os.path.dirname()
获得绝对路径: os.path.abspath() 
获取⽂件名:os.path.basename()
运⾏shell命令: os.system()
读取操作系统环境变量HOME的值:os.getenv("HOME")
返回操作系统所有的环境变量: os.environ
设置系统环境变量,仅程序运⾏时有效:os.environ.setdefault('HOME','/home/alex')
给出当前平台使⽤的⾏终⽌符:os.linesep Windows使⽤'\r\n',Linux and MAC使⽤'\n'
指示你正在使⽤的平台:os.name 对于Windows,它是'nt',⽽对于Linux/Unix⽤户,它
是'posix'
重命名:os.rename(old, new)
创建多级⽬录:os.makedirs(r“c:\python\test”)
创建单个⽬录:os.mkdir(“test”)
获取⽂件属性:os.stat(file)
修改⽂件权限与时间戳:os.chmod(file)
获取⽂件⼤⼩:os.path.getsize(filename)
结合⽬录名与⽂件名:os.path.join(dir,filename)
改变⼯作⽬录到dirname: os.chdir(dirname)
获取当前终端的⼤⼩: os.get_terminal_size()
杀死进程: os.kill(10884,signal.SIGKILL)
解释器交互“sys”
“sys”即“system”,“系统”之意。该模块提供了一些接口,用于访问 Python 解释器自身使用和维护的变量,同时模块中还提供了一部分函数,可以与解释器进行比较深度的交互
import sys
print("-----获取环境变量-----")
print(sys.path)
print("-----获取当前脚本的参数-----")
print(sys.argv)

结果
-----获取环境变量-----
['D:\\pythonProject6', 'D:\\pythonProject6', 'D:\\pycharm\\PyCharm 2021.2.3\\plugins\\python\\helpers\\pycharm_display', 'D:\\anaconda\\python38.zip', 'D:\\anaconda\\DLLs', 'D:\\anaconda\\lib', 'D:\\anaconda', 'C:\\Users\\qingyun\\AppData\\Roaming\\Python\\Python38\\site-packages', 'D:\\anaconda\\lib\\site-packages', 'D:\\anaconda\\lib\\site-packages\\locket-0.2.1-py3.8.egg', 'D:\\anaconda\\lib\\site-packages\\win32', 'D:\\anaconda\\lib\\site-packages\\win32\\lib', 'D:\\anaconda\\lib\\site-packages\\Pythonwin', 'D:\\pycharm\\PyCharm 2021.2.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
-----获取当前脚本的参数-----
['D:/pythonProject6/main.py']
datetime 模块

相比于time模块,datetime模块的接⼝则更直观、更容易调⽤

datetime 模块定义了下⾯这⼏个类:
datetime.date :表示⽇期的类。常⽤的属性有 year, month, day
datetime.time :表示时间的类。常⽤的属性有 hour, minute, second, microsecond
datetime.datetime :表示⽇期时间。
datetime.timedelta :表示时间间隔,即两个时间点之间的⻓度。
datetime.tzinfo :与时区有关的相关信息。(这⾥不详细充分讨论该类,感兴趣的童鞋可以参考 python⼿册)
我们需要记住的方法仅以下几个:
1. d=datetime.datetime.now() 返回当前的 datetime ⽇期类型 , d.timestamp(),d.today(),
d.year,d.timetuple() 等⽅法可以调⽤
2. datetime.date.fromtimestamp(322222) 把⼀个时间戳转为 datetime ⽇期类型
3. 时间运算
>>> datetime.datetime.now()
datetime.datetime(2017, 10, 1, 12, 53, 11, 821218)
>>> datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天
datetime.datetime(2017, 10, 5, 12, 53, 35, 276589)
>>> datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4⼩时
datetime.datetime(2017, 10, 1, 16, 53, 42, 876275)
4. 时间替换
>>> d.replace(year=2999,month=11,day=30)
datetime.date(2999, 11, 30)

random随机数

程序中有很多地⽅需要用到随机字符,比如登录网站的随机验证码,通过 random 模块可以很容易生成 随机字符串。

>>> random.randrange(1,10) #返回1-10之间的⼀个随机数,不包括10
>>> random.randint(1,10) #返回1-10之间的⼀个随机数,包括10
>>> random.randrange(0, 100, 2) #随机选取0到100间的偶数
>>> random.random() #返回⼀个随机浮点数
>>> import random
>>> random.choice('abcdefghi')
'i'
>>> random.sample('abcdefghij',3) #从多个字符中选取特定数量的字符
['h', 'c', 'f']
>>> import string
>>> ''.join(random.sample(string.ascii_lowercase + string.digits, 6))
'4fvda1'
#洗牌
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(a)
>>> a [3, 0, 7, 2, 1, 6, 5, 8, 9, 4]

序列化json模块

什么是 Json?
Json的作用是用于不同语言接口间的数据交换,比如你把 python list dict 直接扔给 javascript, 它是解 析不了的。
2 个语⾔互相谁也不认识。 Json 就像是计算机界的英语 ,可以帮各个语⾔之间实现数据类型
的相互转换。
python的序列化
>>> names=["qingyun","wenzhu","猪猪侠"]
>>> names
['qingyun', '猪猪侠', 'wenzhu']
>>> import json
>>> json.dumps(names)
'["qingyun", "wenzhu", "\\u732a\\u732a\\u4fa0"]'
JSON ⽀持的数据类型
Python 中的字符串、数字、列表、字典、集合、布尔 类型,都可以被序列化成 JSON 字符串,被其它任何编程语⾔解析。
什么是序列化?
序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过⽹络传输到远程,因为硬盘 或网络传输时只能接受bytes
为什么要序列化?
你打游戏过程中,打累了,停下来,关掉游戏、想过 2 天再玩, 2 天之后,游戏⼜从你上次停⽌的地⽅继 续运⾏,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产⽣的很多临时数据是不规律的,可能在你关掉游戏时正好有10 个列表, 3 个嵌套字典的数据集合在内存⾥,需要存下来?你 如何存?把列表变成⽂件⾥的多⾏多列形式?那嵌套字典呢?根本没法存。所以,若是有种办法可以直 接把内存数据存到硬盘上,下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。
⽤于序列化的两个模块
json ,⽤于字符串 和 python 数据类型间进⾏转换
pickle ,⽤于 python 特有的类型 和 python 的数据类型间进⾏转换
pickle
模块提供了四个功能: dumps dump loads 、load
import pickle
data = {'k1':123,'k2':'Hello'}
# pickle.dumps 将数据通过特殊的形式转换位只有python语⾔认识的字符串
p_str = pickle.dumps(data) # 注意dumps会把数据变成bytes格式
print(p_str)
# pickle.dump 将数据通过特殊的形式转换位只有python语⾔认识的字符串,并写⼊⽂件
with open('result.pk',"wb") as fp:
 pickle.dump(data,fp)
# pickle.load 从⽂件⾥加载
f = open("result.pk","rb")
d = pickle.load(f)
print(d)
json
Json 模块也提供了四个功能: dumps dump loads load ,⽤法跟 pickle ⼀致
json vs pickle:
JSON:
优点:跨语⾔ ( 不同语⾔间的数据传递可⽤ json 交接 ) 、体积⼩
缺点:只能⽀持 int\str\list\tuple\dict
Pickle:
优点:专为 python 设计,⽀持 python 所有的数据类型
缺点:只能在 python 中使⽤,存储数据占空间大

Python xlrd 读取 Excel 表格基础

安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl

   前面已经介绍了Python 第三方模块xlwt,将数据写入Excel表格的基础操作。从这篇博客开始来介绍 xlrd 模块读取 Excel 表格数据内容的操作。

本篇主要内容为:

1、获取工作簿、sheet表对象;
2、获取sheet表中行对象,列对象;
3、获取sheet表中所有数据;
4、获取工作簿对象所有sheet表数据。

1、获取工作簿、sheet对象

下面是示例所使用的两张表在CSDN创作中心的数据数据详情中下载了一个Excel表格文件,然后做成了两个sheet表,文件截图如下:
sheet1 截图:

 sheet2 截图:

 获取工作簿文件对象(打开文件):

# 导入模块
import xlrd
# 打开文件方式1:
work_book = xlrd.open_workbook(r'C:\Users\qingyun\Desktop\全部文章分析.xlsx')
# 获取工作簿中sheet表数量
print(work_book.nsheets)


#结果
2
获取工作簿对象属性:
print("----------获取工作簿对象属性----------")
print("1.-----获取工作簿中sheet表数量-----")
print("获取工作簿中sheet表数量{0}".format(work_book.nsheets))
print("2.-----获得工作表中所有的sheet表对象-----")
sheets=work_book.sheets()
print("获得工作表中所有的sheet表对象{0}".format(sheets))
print("3.-----获取工作簿所有sheet表对象名称-----")
sheets_name = work_book.sheet_names()
print("获取工作簿所有sheet表对象名称-{0}".format(sheets_name))

#结果
----------获取工作簿对象属性----------
1.-----获取工作簿中sheet表数量-----
获取工作簿中sheet表数量2
2.-----获得工作表中所有的sheet表对象-----
获得工作表中所有的sheet表对象[<xlrd.sheet.Sheet object at 0x0000010F7585ACD0>, <xlrd.sheet.Sheet object at 0x0000010F7585AD60>]
3.-----获取工作簿所有sheet表对象名称-----
获取工作簿所有sheet表对象名称-['sheet1', 'sheet2']

 按索引、名称获取sheet表对象

# 导入模块
import xlrd
# 打开文件方式1:
work_book = xlrd.open_workbook(r'C:\Users\qingyun\Desktop\全部文章分析.xlsx')
print("----------按索引、名称获取sheet表对象:----------")
print("1.-----按索引获取sheet对象-----")
sheet_1 = work_book.sheet_by_index(0)
print("按索引获取sheet对象{0}".format(sheet_1))
print("2.-----按sheet表名称获取sheet对象,名称分大小写-----")
sheet_2 = work_book.sheet_by_name('sheet2')
print("获得工作表中所有的sheet表对象{0}".format(sheet_2))

#结果
----------按索引、名称获取sheet表对象:----------
1.-----按索引获取sheet对象-----
按索引获取sheet对象<xlrd.sheet.Sheet object at 0x000002493F8DAD60>
2.-----按sheet表名称获取sheet对象,名称分大小写-----
获得工作表中所有的sheet表对象<xlrd.sheet.Sheet object at 0x000002493F8DAD00>
  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我来更加具体地讲解一下 Python 期末复习的内容。 1. Python 的基础知识 - 变量:Python 的变量不需要事先声明,可以直接赋值。变量名必须是字母、数字、下划线组成,且不能以数字开头。 - 数据类型:Python 的数据类型括数字、字符串、布尔值、列表、元组、字典和集合等。 - 运算符:Python 的运算符括算术运算符、比较运算符、逻辑运算符、位运算符和赋值运算符等。 - 条件语句:Python 的条件语句括 if、elif 和 else。 - 循环语句:Python 的循环语句括 while 和 for。 - 函数:Python 的函数使用 def 关键字定义,可以接收参数和返回值。 - 模块Python 模块是一个 Python 文件,可以被其他 Python 文件导入和使用。 2. 字符串、列表、字典和元组的使用 - 字符串:Python 的字符串可以使用单引号或双引号表示,也可以使用三引号表示多行字符串。字符串支持切片、拼接和格式化等操作。 - 列表:Python 的列表可以含多个元素,使用方括号表示。列表支持索引、切片、添加、删除和排序等操作。 - 字典:Python 的字典是一种键值对的数据结构,使用大括号表示。字典支持添加、删除、修改和查找等操作。 - 元组:Python 的元组与列表类似,但是元组是不可变的,使用圆括号表示。 3. 面向对象编程的基本概念 - 类:Python 的类定义使用 class 关键字,可以含属性和方法。 - 对象:Python 的对象是类创建的实例,可以访问类的属性和方法。 - 继承:Python 的继承使用关键字 extends,可以继承父类的属性和方法。 - 多态:Python 的多态指同一个方法可以在不同的对象上使用,产生不同的效果。 4. 文件操作 - 打开文件:Python 使用 open 函数打开文件,可以指定文件名、打开模式和编码等参数。 - 读取文件:Python 使用 read、readline 和 readlines 方法读取文件内容。 - 写入文件:Python 使用 write 方法写入文件内容。 - 关闭文件:Python 使用 close 方法关闭文件。 5. 异常处理机制 - try-except-finally:Python 使用 try-except-finally 语句处理异常,可以捕获并处理异常,最终执行 finally 块的代码。 6. 模块的导入和使用 - import 语句:Python 使用 import 语句导入模块,可以使用模块的函数和变量。 - from-import 语句:Python 使用 from-import 语句导入模块的函数和变量,可以省略模块名。 7. Python 的标准库和第三方库的使用 - 标准库:Python 自带的库称为标准库,括 os、sys、math、random 等模块。 - 第三方库:Python 还有很多第三方库可供使用,如 NumPy、Pandas、Matplotlib 等。 8. 正则表达式的使用 - 正则表达式:Python 使用 re 模块支持正则表达式,可以用来匹配字符串、替换字符串等操作。 9. 网络编程 - socket 编程:Python 使用 socket 模块支持网络编程,可以实现客户端和服务器的通信。 10. 多线程、多进程和协程的使用 - 多线程:Python 使用 threading 模块支持多线程编程,可以实现并发执行。 - 多进程:Python 使用 multiprocessing 模块支持多进程编程,可以利用多核 CPU 提高性能。 - 协程:Python 使用 asyncio 模块支持协程编程,可以实现异步编程。 11. Python 的虚拟环境和管理工具 - virtualenv:Python 使用 virtualenv 工具创建虚拟环境,可以隔离不同项目的依赖。 - pip:Python 使用 pip 工具安装和管理第三方库,可以自动解决依赖关系。 12. 数据库编程 - MySQL:Python 使用 MySQLdb 模块支持 MySQL 数据库编程,可以连接 MySQL 数据库并执行 SQL 语句。 - SQLite:Python 使用 sqlite3 模块支持 SQLite 数据库编程,可以连接 SQLite 数据库并执行 SQL 语句。 - MongoDB:Python 使用 pymongo 模块支持 MongoDB 数据库编程,可以连接 MongoDB 数据库并执行 CRUD 操作。 13. Web 开发 - Flask:Python 使用 Flask 框架支持 Web 开发,可以快速搭建 Web 应用。 - Django:Python 使用 Django 框架支持 Web 开发,可以实现 Web 应用的快速开发和部署。 以上是 Python 期末复习的具体内容,希望能对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿云阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值