python——库的管理

1、标准库

安装python解释器后,直接自带的库称为标准库,常用标准库如:os、time、datetime、hashlib、json、sys、csv。

1.1os库:该模块提供了针对路径的处理

os库的常用函数如下:

1.1.1获取当前路径

import os   #借用外部的库,需要先进行调用。
#获取当前工作目录,即当前python脚本工作的目录路径。
print("获取当前路径",os.getcwd())   #获取某个固定的路径,一般来说不是很实用。

#路径拼接
#基础路径,可以通过该方法获取可变的路径。
print(os.path.dirname(__file__))
#获取当前路径的上一级目录
print(os.path.dirname(os.path.dirname(__file__)))
#获取当前路径的上两级目录
print(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))

 1.1.2通过基础路径的方法读取文件

import os   #借用外部的库,需要先进行调用。
#通过基础路径读取文件,如读取标准库实战文件夹下的data文件夹下的login.txt文件。
base_dir=os.path.dirname(__file__)   #定义基础路径(base_dir),获取标准库实战文件夹。
print(base_dir)
# 路径拼接,filePath=(os.path.join(base_dir,"存放文件的文件夹","文件名")。
#存放文件的文件夹如果在获得的基础路径的第二级目录下,(base_dir,"存放文件的文件夹","文件名")就可以写为(base_dir,"存放文件的第一级文件夹","存放文件的第二级文件夹","文件名")
filePath=(os.path.join(base_dir,"data","login.txt"))   #定义变量为获取文件的路径和文件名(fliePath):路径拼接。
with open(file=filePath,mode="r",encoding="utf-8") as f:
	print(f.read())

 

 1.1.3获取当前目录下的所有文件和文件夹

import os   #借用外部的库,需要先进行调用。
#获取当前目录下所有文件和文件夹
for a in os.listdir(path=os.getcwd()):
	print(a)

1.1.4获取文件/目录信息

import os   #借用外部的库,需要先进行调用。
#获取某个文件或目录信息:os.stat("某个目录\某个文件")
print(os.stat("D:"))

1.1.5 查看操作系统名称

import os   #借用外部的库,需要先进行调用。
#获取操作系统名称,windows平台下返回‘nt’,Linux则返回‘posix’。
print(os.name)

 1.1.6查看系统环境变量

import os   #借用外部的库,需要先进行调用。
#获取系统环境变量
print(os.environ)

1.1.7判断文件是否存在

import os   #借用外部的库,需要先进行调用。
#判断文件是否存在。输出的是True或者Flase
print(os.path.exists(filePath))

1.2time库:该模块提供各种与时间有关系的库

1.2.1获取时间戳

# #time:该模块提供各种与时间有关系的库。
import time  #借用外部的库,需要先进行调用。
#获取时间戳
print(time.time())

1.2.2以字符串格式获取当前时间

# #time:该模块提供各种与时间有关系的库。
import time  #借用外部的库,需要先进行调用。
#获取当前时间字符串格式,获取的是北京时间。
print(time.ctime())

1.2.3程序休眠(秒)

# #time:该模块提供各种与时间有关系的库。
import time  #借用外部的库,需要先进行调用。
#程序休眠,以秒为单位。
time.sleep(5)
print("休息好了么?")

 1.2.4时间戳转换为本地时间

# #time:该模块提供各种与时间有关系的库。
import time  #借用外部的库,需要先进行调用。
#时间戳转换为本地时间
localTime=time.localtime(time.time())
print(localTime)
#时间戳转换为本地时间,然后通过字符串的格式化输出
print("年:{0},月:{1},日:{2}".format(localTime.tm_year,localTime.tm_mon,localTime.tm_yday))

序号 属性 字段
0 tm_year 4位数年 如2022
1 tm_mon 1到12
2 tm_mday 1到31
3 tm_hour 小时 0到23
4 tm_min 分钟 0到59
5 tm_sec 0到61 (60或61 是闰秒)
6 tm_wday 一周的第几日 0到6(0是星期一)
7 tm_yday 一年的第几日 0到366

1.2.5中国式输出时间

# #time:该模块提供各种与时间有关系的库。
import time  #借用外部的库,需要先进行调用。
#中国人的方式输出时间
print(time.strftime("%y-%m-%d %H:%M:%S" ,time.localtime()))
print(time.strftime("%T %x",time.localtime()))
#strftime方法格式化输出时间的控制符。
# %y:两位数的年份表示(00 - 99)
# %Y:四位数的年份表示(000 - 9999)
# %m:月份(01 - 12)
# %d:月内中的一天(0 - 31)
# %H:24小时制小时数(0 - 23)
# %I:12小时制小时数(01 - 12)
# %M:分钟数(00 - 59)
# %S:秒(00 - 59)
# %a:本地简化星期名称
# %A:本地完整星期名称
# %b:本地简化的月份名称
# %B:本地完整的月份名称
# %c:本地相应的日期表示和时间表示
# %j:年内的一天(001 - 366)
# %p:本地A.M.或P.M.的等价符
# %U:一年中的星期数(00 - 53)星期天为星期的开始
# %w:星期(0 - 6),0为星期天,为星期的开始
# %W:一年中的星期数(00 - 53)星期一为星期的开始
# %x:本地相应的日期表示
# %X:本地相应的时间表示
# %T:本地相应时间的表示

1.3datetime库: 该模块也是表达时间的,但是比time更加直观

1.3.1查询当前时间

import datetime   #借用外部的库,需要先进行调用。
#查询当前时间
print(datetime.datetime.now())   #第一个datetime表示的是库,第二个datetime是类,now是方法。

1.3.2在当前时间基础上增加或减少时间

import datetime   #借用外部的库,需要先进行调用。
#在当前时间的基础上增加/减少天数、小时、分、秒,无法增加或减少年份。
#在当前时间的基础上增加5天
print(datetime.datetime.now()+datetime.timedelta(days=5))
#在当前时间的基础上增加3小时
print(datetime.datetime.now()+datetime.timedelta(hours=3))
#在当前时间的基础上增加10分钟
print(datetime.datetime.now()+datetime.timedelta(minutes=10))
#在当前时间的基础上增加59秒
print(datetime.datetime.now()+datetime.timedelta(seconds=59))
#在当前时间的基础上减少3天
print(datetime.datetime.now()+datetime.timedelta(days=-3))

1.3.3时间戳转换为当前时间

import datetime   #借用外部的库,需要先进行调用。
import time   #借用外部的库,需要先进行调用。
#把时间戳转换为当前时间
print(datetime.datetime.fromtimestamp(time.time()))

1.4hashlib:该模块是专门处理处理加密的

open API:开发平台,开放平台可以理解为一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用,以便达到数据交互、合作共赢的目的。

开放平台接口加密的步骤:

(1)对请求参数进行排序;

(2)排序之后处理成k=value&k=value的形式;

(3)进行md5的加密,生成密钥。

#开放平台接口加密的步骤:
import hashlib
from urllib import parse   #urrlib是一个专门做网络爬虫的库,现在已经很少使用。
# parse方法可以用来将字典形式的请求参数处理成k=value&k=value的形式。
import time
#对内容进行md5的加密。
def sign():
	dict1={"name":"qy","age":18,"sex":"girl","school":"xtu","time":time.time()}
#第一步:对请求参数根据key进行排序
	dict2=dict(sorted(dict1.items(),key=lambda a:a[0]))
	print(dict2)
#第二步:把请求参数处理成k=value&k=value的形式
	dict2=parse.urlencode(dict2)
	print(dict2)
#第三步:对请求参数进行md5的加密
	m=hashlib.md5()
#第四步:把字符串的数据类型处理成bytes的数据类型,字符串转bytes数据类型通过编码和解码进行处理。
	m.update(dict2.encode("utf-8"))
#第五步:返回加密后生成的密钥。
	return m.hexdigest()
print(sign())

1.5json:该模块可以实现序列化与反序列化

(1)序列化:把内存里的数据类型转为字符串的数据类型,使能够存储到硬盘或通过网络传输到远程,因为硬盘或者网络传输时只接受bytes的数据类型。简单的说就是把Python的数据类型(字典,元组,列表)转为str的数据类型过程。

(2)反序列化,就是str的数据类型转为Python对象的过程。

1.5.1列表的序列化与反序列化

import json   #借用外部的库,需要先进行调用。
#列表的序列化和反序列化,列表经过序列化和反序列化其数据类型不变。
#列表的序列化,用的关键字是dumps。
list1=["python","go","java"]
list_str=json.dumps(list1)
print(list_str)
print(type(list_str))
#列表的反序列化,用的关键字是loads。
str_list=json.loads(list_str)
print(str_list)
print(type(str_list))

1.5.2元组的序列化与反序列化

import json   #借用外部的库,需要先进行调用。
#元组的序列化与反序列化,元组经过序列化和反序列化后,其数据类型变为列表的类型了。
#元组的序列化,用的关键字是dumps。
tuple1=("python","go","java")
tuple_str=json.dumps(tuple1)
print(type(tuple_str))
print(tuple_str)
#元组的反序列化,用的关键字是loads。
str_tuple=json.loads(tuple_str)
print(type(str_tuple))
print(str_tuple)

 1.5.3字典的序列化与反序列化

import json   #借用外部的库,需要先进行调用。
#字典的序列化与反序列化,字典经过序列化和反序列化其数据类型不变。
#字典的序列化,用的关键字是dumps。
dict1={"python":1,"go":2,"java":3,}
dict_str=json.dumps(dict1)
print(type(dict_str))
print(dict_str)
#字典的反序列化,用的关键字是loads。
str_dict=json.loads(dict_str)
print(type(str_dict))
print(str_dict)

#字典的序列化,且使其结构化输出,并且处理中文
dict2={"python":"学习","go":2,"java":3,"dataS":[{"math":99,"chinese":95,"English":100},{"wl":80,"sw":97,"zz":86}]}
#indent=True:字符串结构化输出
#ensure_ascii=False:处理中文
print(json.dumps(dict2,indent=True,ensure_ascii=False))

 

1.5.4文件的序列化与反序列化

import json   #借用外部的库,需要先进行调用。
#针对文件的序列化和反序列化
dict2={"python":"学习","go":2,"java":3,"dataS":[{"math":99,"chinese":95,"English":100},{"wl":80,"sw":97,"zz":86}]}
#文件的序列化,就是把目标的文件写入到文件中,写入文件中的内容,其数据类型应该是字符串。
json.dump(dict2,open("data.txt","w",encoding="utf-8"),ensure_ascii=False)
#在windows中,需要双重编码encoding="utf-8"、ensure_ascii=False去解决中文的问题,在mac中,只需要用ensure_ascii=False来对中文进行处理即可。
#文件的反序列化,就是从文件中读取文件内容,读取到的文件的数据类型是字典。
print(json.load(open("data.txt","r",encoding="utf-8")))
#把读取的文件的内容,再序列化,把字典转为字符串。
print(json.dumps(json.load(open("data.txt","r",encoding="utf-8")),ensure_ascii=False))

2、第三方的库

由全球顶级的程序员写好了的代码,我们想要使用的时候直接进行下载安装它即可,它是有专门的网站可以下载的。它的安装方式如下:

(1)在线安装

pip3 install 库的名称:库的安装

pip3 uninstall 库的名称:库的卸载

pip3 install -u 库的名称:库的更新

(2)离线安装

安装的网站:https://pypi.org/project/

2.1常用的第三方的库

(1)selenium:UI测试框架

(2)Appium:移动UI测试框架

(3)requests:接口测试框架

(4)pymysql:操作mysql

(5)xlrd:操作excel文件

(6)Django:全栈WEB框架

(7)flask:轻量级WEB框架

(8)fast:异步WEB框架

(9)Pytest:单元测试框架

3、自定义的库

自己编写的python文件。

 

posted @ 2022-03-31 18:25  柒の夜  阅读(359)  评论(0编辑  收藏  举报