python学习(常用库与IO操作)

一、模块与包

1、定义:

package:针对代码结构的组织,一个包里面可以拥有很多的python文件

module:一个python文件就是一个模块

 

2、概念:

 

 

 

 二、模块之间的引用

一个模块想引用另外一个模块里面的代码,怎么实现?
from 项目包.模块 import 变量,函数

规则:

1、不管是同一个包还是不同的包,原理是一样的(from 包.模块.import *)

2、不管需要引用的模块在几层包下,原理是一样的(from 包.包.包.模块 inport *)

3、引用所有的变量和函数,快捷使用*来代表被引用的模块内所有的

例如:

引用asd包下index模块中的变量、函数

from asd.index import name,login
print(name)
login()

 

 

 

 

三、常用库

1、标准库:安装python环境后自带的

①、Random 伪造随机数

import random
print(random.randint(10,99))           

  

②、json

序列化与反序列化(python对象)

序列化:把python对象(list&tuple&dict)转为字符串的过程    关键字:dumps()

反序列化: 字符串转为python对象的过程      关键字:loads()

A、字典的序列化与反序列化

import json            
dict1={'name':'wuya','age':18}
#字典的序列化
dict_str=json.dumps(dict1)
print(dict_str,type(dict_str))
#字典的反序列化
str_dict=json.loads(dict_str)
print(str_dict,type(str_dict))

B、列表的序列化与反序列化

Import json
lists=[x for x in range(10)]
#列表的序列化
list_str=json.dumps(lists)
print(list_str,type(list_str))
#列表的反序列化
str_list=json.loads(list_str)
print(str_list,type(str_list))

C、元组的序列化与反序列化  
import json

tuple1=(1,2,3)
#元组的序列化
tuple_str=json.dumps(tuple1)
print(tuple_str,type(tuple_str))
#元组的反序列化
str_tuple=json.loads(tuple_str)
print(str_tuple,type(str_tuple))

D、文件的序列化与反序列化  

  • 文件的序列化:把第三方的内容写到文件里面   关键字 dump()
  • 文件的反序列化:把文件里面的内容读取出来   关键字 load(

Import json

dict1={"token":"eyJ0eXAi","user":{"uid":"adGw32EcTpNmbYrN2mXCkA","telephone":"xxxx","username":"xx","email":None,"avator":"","date_joined":"2022-01-08T15:07:01.003115+08:00","is_active":True}}
#文件的序列化
json.dump(dict1,open('login.json','w',encoding='utf-8'))
#文件的反序列化
print(json.load(open('login.json','r',encoding='utf-8')))

③、time

l time.sleep(5)  程序休眠5秒

l 获取当前的时间戳

Import time

Print(time.time())

  • 时间戳转为当前时间

Import time

t=time.localtime(time.time())
print(t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min,t.tm_sec)

  • 获取当前时间(中国式展示)

Import time

print(time.strftime('%y-%m-%d %H:%M:%S',time.localtime()))

④、datatime

  • 获取当前时间

Import datatime

print(datetime.datetime.now())

  • 在当前时间基础上加减时间

print(datetime.datetime.now()+datetime.timedelta(days=2))   

④、hashlib

l hsahlib 里面主要会涉及到md5的加密算法的

l open api 开放接口平台

针对请求参数进行ascil码排序(字典排序)
把请求参数处理成key1=value1&key2=value2
进行md5的加密

l 举例(自定义一个字典,进行加密获取秘钥)

import hashlib
from urllib import parse   
import time

def sign():
    dict1={'name':'wuya','age':18,'sex':'boy','time':time.time()}   
    dict1=dict(sorted(dict1.items(),key=lambda item:item[0]))        
    print(dict1)                                                    
    data=parse.urlencode(dict1)                                      
    print(data)                                              
#针对数据进行md5的加密
    m=hashlib.md5()
    m.update(data.encode('utf-8'))
    print(m.hexdigest())
sign()

2、第三方的库:第三方的个人以及公司发布

①、安装:pip install 库的名称

②、卸载:pip uninstall 库的名称

③、第三方库介绍

selenium:WEB自动化测试框架

requests:API测试框架

flask:轻量级WEB开发框架

django:全栈WEB开发框架

fastapi:异步WEB框架

pytest:单元测试框架

3、自定义的库

IO操作(文件的读/写)

1、操作文件的三个步骤:

打开文件、读/写、关闭文件

2、文件操作的方式

①、a:追加

②、w:写(假设文件里面有内容,先清空再写)

③、r:读

3、open函数写文件逻辑

①、如果被操作的文件不存在,它会自动创建文件

 

 

 

②、如果文件存在,并且里面有内容,模式是w,先清空再写

 

 

 

 

 

③、批量写入
list1=[x for x in range(10)]
f=open('log.txt','w')
for item in list1:
    f.write('\n'+str(item))          
f.close()

 

 

 

4、open函数读文件逻辑

①、前提是必须读取的文件存在,如果不存在,出错:NotFoundError

A:文件不存在

f=open('log.md','r')
print(f.read())
f.close()

B:文件存在

f=open('log.txt','r')
print(f.read())
f.close()

 

②、读取(默认读取、按行读取、按关键字读取)

原文件内容:

 

A:默认读取

f=open('log.txt','r',encoding='utf-8')        
print(f.readline())
f.close()

 

B:按行读取

f=open('log.txt','r',encoding='utf-8')   

for item in f.readlines():
    print(item.strip())

 

C:按关键字读取

f=open('log.txt','r',encoding='utf-8')

for item in f.readlines():
    if '好' in item:           
        print(item)
f.close()

 

D:乱码

读取或者写入时,中文不被识别而出现的现象

5、with上下文:

它内部会自动关闭文件(以防止操作完后忘记close文件,导致内存堆积泄漏)

with open('log.txt','r',encoding='utf-8') as f :
    for item in f.readlines():
        print(item.strip())

posted @ 2022-09-07 18:14  陌上归程  阅读(340)  评论(0编辑  收藏  举报