Python8

Python8

1、模块和包

1.1概述

1、模块:在python中,每一个python文件都是一个模块(module)。

2、包(package):在一个包里面会有很多模块。

3、包与文件夹的区别:包里面有_init _.py文件;文件夹里没有。

4、如何创建包和文件夹:

(1)创建包,如下图,包的中间有一个小孔。

 

 

1.2模块间的调用

一个模块调用另一个模块中的所有的内容,前提是另一个模块是一个包中的,用的是from (包的位置).package.module import (代表所有内容)。

 

 

在另一个模块中调用

 

 

2、动态参数

1、函数的形式参数个数不确定 2、函数的形式参数数据类型不存在

*:代表的是元祖(非键值对均为元祖) **:代表的是字典(上传元素要是键值对)

 动态参数场景
 1、接口测试中,有个接口,有时候请求需要4个参数,有时候需要5个,有时候需要6个,有时候一个不需要
 
 '''
 def data1():
    return{}
 
 def data2():
    return {'name':'qqq','age':'18','address':'xian','sex':"M"}
 
 def data(**kwargs):
    return kwargs
 
 print(data())
 print(data(name='qqq'))
 print(data(**{'name':'qqq','age':'18','address':'xian','sex':"M"}))

 

 

 

3、库的管理

3.1、标准库

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

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

3.2.1os库的常用函数如下:

 import os
 
 #获取当前路径
 print(os.path.dirname(__file__))
 
 #获取当前路径的上一级路径
 print(os.path.dirname(os.path.dirname(__file__)))
 base_dir=os.path.dirname(os.path.dirname(__file__))
 
 #路径拼接
 print(os.path.join(base_dir,'data','log'))
 filepath=os.path.join(base_dir,'data','log')
 
 with open(file=filepath,mode='r',encoding='utf-8')as f:
    print(f.read())

 

 

3.1.2获取操作系统

 #获取操作系统
 print(os.name)
 

 

 

3.1.3判断目录文件

 #判断目录是否存在
 print(os.path.exists('F:\TestDev'))
 #判断是否是文件
 print(os.path.isfile('F:\TestDev'))

 

 

3.1.4输出文件夹下的内容

 for item in os.listdir('F:\TestDev'):
    print(item)

 

 

3.1.5调用网站

 print(os.system('ping www.baidu.com'))

 

 

3.3time库:提供各种与时间有关的库

3.3.1获取时间戳

 import time as t
 print('获取当前时间的时间戳:',t.time())

 

 

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

 import time as t
 print('返回当前时间的字符串:',t.ctime())

 

 

 import time as t
 
 print('时间戳转为字符串:',t.ctime(t.time()))
 print('本地化:',t.localtime(t.time()).tm_year)
 print('常用时间:',t.strftime('%y-%m-%d %H:%M:%S',t.localtime()))
 print('常用时间:',t.strftime('%y-%m-%d %x',t.localtime()))

 

 

3.3.3程序休眠

 t.sleep(5)     #休眠
 print('五秒后运行')

 

 

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

3.4.1查询当前时间

 import  datetime
 print(datetime.datetime.now())

 

 

3.4.2在当前时间增加或减少时间

 import  datetime
 
 print(datetime.datetime.now()+datetime.timedelta(days=10))

 

 

3.4.3时间戳转换为当前时间

 import  datetime
 
 print(datetime.datetime.fromtimestamp(time.time()))

 

 

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

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

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

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

(2)排序之后处理成key1=value1&key2=value2的形式;

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

 import  hashlib
 from urllib import parse
 import time
 
 def sign():
    dict1={'name':'qqq','age':20,'sex':'M','time':time.time()}
    data1=dict(sorted(dict1.items(),key=lambda item:item[0]))     #字典排序
    print(data1)
    data2=parse.urlencode(data1)           #把排序后的结果处理成key1=value1&key2=value2
    print(data2)
    m=hashlib.md5()               #对请求参数进行md5加密
    m.update(data2.encode('utf-8'))       #把字符串数据类型处理为bytes数据类型
 
    print('加密后的结果信息:\n',m.hexdigest())     #执行加密
 sign()

 

 

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

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

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

3.6.1列表的序列化与反序列化

 list1=[x for x in  range(6)]
 
 list1_str=json.dumps(list1)
 print(list1,type(list1_str))
 
 str_list1=json.loads(list1_str)
 print(str_list1,type(str_list1))

 

 

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

 tuple1=('go','java')
 tuple1_str=json.dumps(tuple1)
 print(tuple1_str,type(tuple1_str))
 
 str_tuple=json.loads(tuple1_str)   #元祖方序列化为列表
 print(str_tuple,type(str_tuple))

 

 

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

 dict1={'name':'名字','age':'18','sex':'M'}
 #indent=True:字符串结构化输出
 #ensure_ascii=False:处理中文
 dict1_str=json.dumps(dict1,indent=True,ensure_ascii=False)    
 print(dict1_str,type(dict1_str))
 
 str_dict1=json.loads(dict1_str)
 print(str_dict1,type(str_dict1))

 

 

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

 dict1={'name':'名字','age':'18','sex':'M'}
 
 #文件的反序列化,就是从文件中读取文件内容,读取到的文件的数据类型是字典。
 json.dump(dict1,open('json.txt','w',encoding='utf-8'))
 data=json.load(open('json.txt'))
 print(data,type(data))

 

 

posted @ 2022-06-21 20:01  饭依然特稀  阅读(141)  评论(0编辑  收藏  举报