设计网站开发,做cms网站步骤,家政 东莞网站建设,西电信息化建设网站ython之模块 一、模块的介绍 #xff08;1#xff09;python模块#xff0c;是一个python文件#xff0c;以一个.py文件#xff0c;包含了python对象定义和pyhton语句 #xff08;2#xff09;python对象定义和python语句 #xff08;3#xff09;模块让你能够有逻辑地…ython之模块 一、模块的介绍 1python模块是一个python文件以一个.py文件包含了python对象定义和pyhton语句 2python对象定义和python语句 3模块让你能够有逻辑地组织你的python代码段。 4把相关的代码分配到一个模块里能让你的代码更好用更易懂 5模块能定义函数类和变量模块里也能包含可执行的代码
二、模块的导入 注意点 1一个模块只要导入一次不管你执行多少次import一次就可以 2模块不调用时是置灰状态
1、 格式import 模块名 使用模块名.函数名 案例 import time print(1) time.sleep(5) #休眠 print(2) 2、from 包名.模块名 import * *表示所有的函数 from bao.aa import * 案例 aa模块 def gs(): print(1) def gs1(): print(2) def gs2(): print(3)
bb模块 from bao.aa import * gs() gs1() gs2()
3、from 包名.模块名 import 函数名 *表示所有的函数 案例 aa文件 def gs(): print(1) def gs1(): print(2) def gs2(): print(3)
bb文件 from bao.aa import gs gs() 4、 通过取别名来调用函数 格式from 模块名 import 函数名 as 别名
案例 aa模板 def gs(): print(1) def gs1(): print(2) def gs2(): print(3)bb模块
from bao.aa import gs as b b() 模块讲解一、time模块
import time #1970年到现在经过的秒数 print(time.time()) #1651200498.799537 print(time.ctime()) #固定格式的当前时间 time.sleep(3)) # 休眠也是强制等待 print(time.asctime()) #转化为asc码显示当前时间 print(time.strftime(“%H-%M-%S %y-%m-%d”)) #时间戳按照格式输出内容 二、random模块 生成随机浮点数帧数字符串甚至帮助你随机选择列表中的一个元素打乱一组数据等 from random import * print(random()) #生成0-1之间的浮点数但是能取到0不能取到1 print(randint(1,100)) #生成指定范围内整数包括开始值和结束值 print(randrange(1,100,2)) # 生成指定范围内的奇数 print(randrange(0,100,2)) #生成指定范围内的偶数 f[1,2,3,6,7,2] print(sample(f,3)) #生成从一个固定集合中选n个数随机 print(choice(f)) #随机生成一个字符 shuffle(f) print(list(f)) string 模块 print(string.digits) #0123456789 所有的数据 print(string.hexdigits) #0123456789abcdefABCDEF print(string.ascii_uppercase) #ABCDEFGHIJKLMNOPQRSTUVWXYZ #所有的小写 print(string.ascii_lowercase) #abcdefghijklmnopqrstuvwxyz #所有小写
print(string.ascii_letters) #abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ #所有的大小写 作业: 案例1使用random模块随机生成手机号码、自己定义手机号码开头的前三位 方法1 szstring.digits sj[‘159’] for i in range(8): schoice(sz) sj.append(s) print(‘’.join(sj))
方法2 from random import * import string szstring.digits asample(sz,8) b(‘’.join(a)) sjinput(‘前三位’) print(sjb)
方法3 from random import * import string szstring.digits asample(sz,8) b(‘’.join(a)) sz‘159’ print(szb)
方法4 from random import * import string szstring.digits asample(sz,8) sz[1,5,9] sz.extend(a) for i in sz: print(i,end‘’) 2、用random模块随机生成6位数验证码
方法1 from random import * a[] for i in range(6): bstr(randint(0,9)) a.append(b) print(‘’.join(a))
方法2 from random import * import string dstring.digitsstring.ascii_uppercasestring.ascii_lowercase print(d) for i in range(6) : schoice(d) print(s, end‘’) 方法3 import random import string yzmstring.digitsstring.ascii_uppercasestring.ascii_lowercase
print(yzm) arandom.sample(yzm,6) print(‘’.join(a))
方法4 a[] for i in range(6): rand_numrandom.randint(0,9) a.append(str(rand_num)) print(‘’.join(a)) 方法5 import random import string print(‘’.join(random.sample(string.digitsstring.ascii_lowercase,6)))
方法6 from random import * import string def kk(): astring.digitsstring.ascii_uppercasestring.ascii_lowercase k[] for i in range(6): k.append(choice(a)) s‘’.join(k) return s codekk() print(code) def hh(): logininput(str(‘请输入上方验证码登录:’)) if logincode: print(‘登录成功’) else: print(‘登录失败’) hh() 加密模块 import hashlib
base64 MD5
一、加密算法 md5、rsa、AES ,DES.BASE DES 以64位为分组队数据加密加密和解密是同一算法‘ rsa加密 算法是一种非对称加密算法在公开秘钥加密和电子商业中rsa被广泛使用 AES rijndael 加密法对称加密中最流行的算法之一AES为分组密码 案例
#base64加密 import base64 abase64.b64encode(b123456) print(a) #b’MTIzNDU2’ #base64解密 bbase64.b64decode(bMTIzNDU2) print(b) #b’123456’ 备注base64 编码包含ascll是包含字符二是二进制数据
http://encode.chahuo.com/ 在线加解密 MD5加密
1md5 是一种算法可以将一个字符串或文件md5后就可以生成一个固定为128bit的串这个串基本上唯一 2python2中有md5 3python将MD5 归纳到hash 模块译作‘散列’直译为‘哈希’。 4md5 可以把任意长度的输入通过种hash算法变换成固定长度的输出该输出就是散列值也称摘要值改算法就是哈希函数也称摘要函数。(5)md5 是最常见的摘要算法速度快生成结果是固定16字节通常用32位的16进制字符串表示。 5hash模块中包含MD5、sha1 sha256 sha512等 6摘要;hash.digest() 返回摘要作为二进制数据字符串值 hash.hexdigeest 返回摘要作为16进制数据字符串值 7案例1 import hashlib mhashlib.md5() # 创建MD5对象 m.update(b123456) print(m.hexdigest()) #e10adc3949ba59abbe56e057f20f883e
十六直径转换输出 备注 1、python中md5要加上bpython2不需要 2、md5 不能范姐但是加密是固定关系是一一对应可以被对撞。
案例1 import hashlib mhashlib.sha384() m.update(b’123456’) print(m.hexdigest())
案例2 import hashlib mhashlib.sha256() m.update(b’123456’) print(m.hexdigest()) 案例3: import hashlib mhashlib.sha512() m.update(b’123456’) print(m.hexdigest())
案例4 - 面试题 1如果在工作中有很多数据如果数据被改动或传递别修改看不出 a、通过加密检查数据 通过加密对数据进行加密处理生成加密字符如果有改动字符就不相同 b、比对数据不一样如果加密的字符不相同说明两个数据不一致 作业 通过md5加密算法把随机生成的6位数验证码进行加密返回16进制的字符串
方法 1 2 3 4 5 6 7 8 9 10 方法1 import random import string import hashlib sstring.digitsstring.ascii_letters hrandom.sample(s,6) yzm.join(h) mhashlib.md5() m.update(yzm.encode(encodingutf-8)) print(m) os模块
os模块提供了多数操作系统的功能接口函数。当os模块被导入后它会自适 应于不同的操作系统平台根据不同的平台进行相应的操作在python编 程时经常和文件、目录打交道所以离不了os模块。 os模块中常见的方法 os.getcwd()获取当前执行命令所在目录 os.path.isfile()判断是否文件 os.path.isdir() #判断是否是目录 os.path.exists() #判断文件或目录是否存在 os.listdir(dirname) #列出指定目录下的目录或文件 os.path.split(name) #分割文件名与目录 os.path.join(path,name) #连接目录与文件名或目录 os.mkdir(dir) #创建一个目录 os.rename(old,new) #更改目录名称 os.remove() 删除文件 固定格式xu 场景一获取当前操作对象中的的的一个项目的绝对路径固定语法 import os #获取项目路径 pos.path.abspath(os.path.dirname(os.getcwd())) print§
#获取当前文件的绝对路径直接通过spliit对目录和文件进行分割 file_pathos.path.split(os.path.realpath(file)) print(file_path) #(‘C:\Users\Administrator\PycharmProjects\gs1\bao’, ‘python006.py’) #获取当前文件的绝对路径直接通过spliit对目录 file_pathos.path.split(os.path.realpath(file))[0] print(file_path) #获取当前文件的绝对路径直接通过spliit对目录 file_path1os.path.split(os.path.realpath(file))[1] print(file_path1)
#获取项目的绝对路径 vos.path.dirname(os.path.dirname(file)) print(v)
#项目路径和包进行拼接 hz_pathos.path.join(v,‘ss.txt’) print(hz_path) #C:/Users/Administrator/PycharmProjects/gs1\ss.txt python中re模块
一、re正则匹配基本介绍 正则匹配使用re模块实现
1、什么是正则表达式 正则表达式是一种对字符和特殊字符操作的一种逻辑公式从特点的字符中用正则表达字符来过滤的逻辑。 2、正则表达式是一种文本模式 3、正则表达式可以帮助我们检查字符是否与某种模式匹配 4、re模块使pyhton语言用有全部的表达式功能 5、re表达式作用 1快速高效查找和分析字符比对自读也叫模式匹配比如查找比对匹配替换插入添加删除等能力。 2实现一个编译查看一般在入职处理文件时用的多
二、认识正则表达式中的特殊元素 \d:数字0-9 \D:非数字 \s:空白字符 \n:换行符 \w 匹配字母数字 \W 匹配非字母数字 ^表示的匹配字符以什么开头 $表示的匹配字符以什么结尾 匹配前面的字符0次或n次 egab * 能匹配a 匹配ab 匹配abb 匹配前面的字符1次或n次 ?匹配?前面的字符0次或1次 {m}匹配前一个字符m次 {m,n}匹配前一个字符m到n次(包括n次)m或n可以省略mn都是 1、findall 从第一个字符开始查找找到全部相关匹配为止找不到返回一个空列表[]
2、match 从第一个字符开始匹配如果第一个字符不是要匹配的类型、则匹配失败得到一个none值 注意如果规则带了’’则匹配1次或者多次无’只匹配一次 3、compile不考虑 编译模式生成对象找到全部相关匹配为止找不到返回一个列表[] 4、search 从第一个字符开始查找、一找到就返回第一个字符串找到就不往下找找不到则报错 group 以str 形式返回对象中match元素 span 以tuple形式返回范围 实战案例 场景一、findall 从第一个字符开始查找找到全部相关匹配为止找不到返回一个空列表[] (1)第一种情况查找字符汇总存在的字符 import re # 导入re模块 s‘anbdckk12356afjmba’ cre.findall(‘a’,s) print© #[‘a’, ‘a’, ‘a’] 显示查找的字符 (2)第二种情况查找不存在的字符 import re # 导入re模块 s‘anbdckk12356afjmba’ cre.findall(‘z’,s) print© #[] 显示的是一个空了列表
场景二、match 匹配开头 从第一个字符开始匹配如果第一个字符不是要匹配的类型、则匹配失败得到一个none值 第一种情况开头是匹配的是存在的字符 import re # 导入re模块 s‘anbdckk12356afjmba’ cre.match(‘a’,s) print(c.span()) #显示结果是索引位(0, 1)
第二种情况开头匹配的是不存在字符 import re # 导入re模块 s‘anbdckk12356afjmba’ cre.match(‘z’,s) print© #None
场景三、search 从第一个字符开始查找、一找到就返回第一个字符串找到就不往下找找不到则报错 第一种情况查看的字符存在返回字符的索引位 import re # 导入re模块 s‘anbdckk12356afjmba’ cre.search(‘1’,s) print(c.span()) #(7, 8)
第一种情况查看的字符不存在返回字符的是none import re # 导入re模块 s‘anb1dckk12356afjmba’ cre.search(‘9’,s) print© # None 1\d:数字0-9 返回的结果是列表的格式 案例 import re # 导入re模块 s‘anb1dckk12356afjmba’ cre.findall(‘\d’,s) print© #[‘1’, ‘1’, ‘2’, ‘3’, ‘5’, ‘6’]
2\D:非数字 案例 import re # 导入re模块 s‘anb1dckk12356afjmba’ cre.findall(‘\D’,s) print©
3\s:空白字符 import re # 导入re模块 s‘a nb1dck k12356a fjmba’ cre.findall(‘\s’,s) print© #[’ , ’ , ’ , ’ , ’ ]
4\n:换行符 案例 import re # 导入re模块 s‘a nb1\ndck k123 \n 56a fjmba’ cre.findall(‘\n’,s) print© #[‘\n’, ‘\n’]
5\w 匹配字母数字 案例 import re # 导入re模块 s‘a nb1*k123jmba’ cre.findall(‘\w’,s) print© #[‘a’, ‘n’, ‘b’, ‘1’, ‘k’, ‘1’, ‘2’, ‘3’, ‘j’, ‘m’, ‘b’, ‘a’]
6\W 匹配非字母数字 案例 import re # 导入re模块 s‘a nb1k123jmba’ cre.findall(‘\W’,s) print© #[’ , ’, ‘, ’, ‘, ’]
7^表示的匹配字符以什么开头
案例 import re # 导入re模块 s‘anb1*k123jmba’ cre.findall(‘^a’,s) print© #[‘a’] KaTeX parse error: Expected EOF, got # at position 30: …案例 import re #̲ 导入re模块 sanb1…’,s) print© #[‘b’]
匹配前面的字符0次或n次 egab * 能匹配a 匹配ab 匹配abb 案例 import re # 导入re模块 s‘anb1aa**k123aaaajmb’ cre.findall(a’,s) print© #[‘a’, ‘’, ‘’, ‘’, ‘’, ‘aa’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘aaaa’, ‘’, ‘’, ‘’, ‘’, ‘’] 匹配前面的字符1次或n次 案例 import re # 导入re模块 s‘anb1aa**k123aaaa*jmaaaaaab’ cre.findall(‘a’,s) print© #[‘a’, ‘aa’, ‘aaaa’, ‘aaaaaa’]
?匹配?前面的字符0次或1次 案例 import re # 导入re模块 s‘anb1aa**k123aaaa*jmaaaaaab’ cre.findall(‘a?’,s) print© #[‘a’, ‘’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘a’, ‘a’, ‘’, ‘’, ‘’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘’, ‘’]
{m}匹配前一个字符m次 案例 import re # 导入re模块 s‘abnb1abca**k123aaaa*jmaasaasaab’ cre.findall(‘a{3}’,s) print©#[‘aaa’]
{m,n}匹配前一个字符m到n次(包括n次)m或n可以省略mn都是
案例 s‘abnb1abca**k123aaaa*jmaaasasaab’ cre.findall(‘a{2,3}’,s) print© #[‘aaa’, ‘aa’, ‘aa’, ‘aa’] re 标识符 flags标识符
(1)re.I大写的i 不区分大小写 import re # 导入re模块 s‘abnb1AabcaAk123jmaaasasaab’ cre.findall(‘a’,s,flagsre.I) print© #[‘a’, ‘A’, ‘a’, ‘a’, ‘A’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’] sub 替换
import re # 导入re模块 s‘abnb1AabcaAk123jmaaasasaab’ cre.sub(‘\d’,‘拱墅’,s) print© python标准模块之json
定义json java script object notation是轻量级的文本数据交换格式
案例json
json和字典 一样
一、json模块可以实现json数据的序列化和反序列化
1序列化将可存放在内存中的python 对象转换成可物理存储和传递的形式
实现方法load() loads()
2反序列化将可物理存储和传递的json数据形式转换为在内存中表示的python对象
实现方法dump() dumps()
查看 dump用法ctrl点击dump 1、由python对象格式化成为jsondumps
案例1将字典格式转化字符
j{name:zs,age:18,no:[123,456],sex:男}
print(j)#{name: zs, age: 18, no: [123, 456], sex: 男}
print(type(j))#class dict
jsonzfcjson.dumps(j,ensure_asciiFalse)# 将一个字典转换称json
print(jsonzfc) #{name: zs, age: 18, no: [123, 456], sex: 男}
print(type(jsonzfc)) #class str 备注
1、python中的字典是单引号字符是双引号
2、字典是大写True 字符是小写 dump 方法
定义往文件中添加字符json
案例1
j{name:zs,age:18,no:[123,456],sex:男,isonly:True}
print(j)
print(type(j))
jsonzfcjson.dumps(j,ensure_asciiFalse)# 将一个字典转换成json
print(jsonzfc)
print(type(jsonzfc))
#dump
json.dump(j,open(data.json,a))
·
indent4 indent 分隔符 排序
案例3 结果
{ name: zs, age: 18, no: [ 123, 456 ], sex: 男, isonly: true } 案例2 对json中字符 排序
sort_keysTrue 排序 三、 json string 转化称python对象
(1)字符类型转换成字典 import _json
json1{age: 18, isonly: true, name: zs, no: [123, 456], sex: 男}
print(type(json1))
jsgsjson.loads(json1)
print(type(jsgs)) #class dict(2)字符类型转换成元组 案例
json2[a,b ,{no: 123, sex: 男}]
print(type(json2))# class str
listgsjson.loads(json2)
print(type(listgs)) #class list 四、load文件转换成 对象方式
1、创建json格式
{age: 18, isonly: true, name: zs, no: [123, 456], sex: 男} 2、将 文件中的json通过load转换字典
import json
dxwjjson.load(open(aa.json,r,encodingutf-8))
print(type(dxwj))
print(dxwj) 重要补充 json的作用
Python 的 json 模块提供了对 JSON (JavaScript Object Notation) 数据格式的编码和解码功能。JSON 是一种轻量级的数据交换格式它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集采用完全独立于语言的文本格式来存储和表示数据。简单、清晰的层次结构使得 JSON 成为理想的数据交换语言。
json 模块的主要功能包括 编码序列化将 Python 对象转换为 JSON 格式的字符串。 使用 json.dumps() 函数可以将 Python 对象序列化为 JSON 格式的字符串。例如 python复制代码 import json data { name: John, age: 30, city: New York } json_string json.dumps(data) print(json_string) # 输出: {name: John, age: 30, city: New York} 解码反序列化将 JSON 格式的字符串转换为 Python 对象。 使用 json.loads() 函数可以将 JSON 格式的字符串反序列化为 Python 对象。例如 python复制代码 import json json_string {name: John, age: 30, city: New York} data json.loads(json_string) print(data) # 输出: {name: John, age: 30, city: New York} print(type(data)) # 输出: class dict 文件读写将 Python 对象写入 JSON 文件或从 JSON 文件中读取 Python 对象。 使用 json.dump() 函数可以将 Python 对象直接写入一个打开的文件对象它将自动转换为 JSON 格式。同样json.load() 函数可以从一个打开的文件对象中读取 JSON 数据并解析为 Python 对象。例如 python复制代码 import json data { name: John, age: 30, city: New York } # 写入文件 with open(data.json, w) as file: json.dump(data, file) # 读取文件 with open(data.json, r) as file: loaded_data json.load(file) print(loaded_data) # 输出: {name: John, age: 30, city: New York}
使用 json 模块你可以方便地在 Python 程序和 JSON 数据之间进行转换这对于数据交换、配置文件管理、API 交互等场景非常有用。