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对象)
l 序列化:把python对象(list&tuple&dict)转为字符串的过程 关键字:dumps()
l 反序列化: 字符串转为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())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库