当前位置: 首页 > 工具软件 > Magic > 使用案例 >

Python Magic——模块

何章横
2023-12-01


前言

模块作为一个库,其中存放的各种各样功能的装备,任何一个大规模的Python都必不可少的就是模块,他对于我们写程序来说是一个及其方便的工具,所谓是必不可少。


模块

1. time—时间模块

a. time.sleep(n)—睡眠时间,睡眠n秒

b. time.time()—时间戳,默认1970到现在所经历的秒数,一般用来计算时间消耗

import time
start = time.time()
time.sleep(2)
stop = time.time()
print('睡眠时间:',(stop-start))

c. time.localtime()—当地时间,结构化时间

print('当地时间:',time.localtime())

e. time.gtime()—UTC世界标准时间,结构化时间

print('国际时间:',time.gmtime())

f. time.mktime()—结构化时间转化为时间戳

print('结构化时间转化为时间戳:',time.mktime(time.localtime()))

g. time.strftime()—结构化时间转化为字符串时间

print('结构化时间转化为字符串时间:',time.strftime('%Y-%m-%d %X',time.localtime()))

h. time.strptime()—字符串时间转化为结构化时间

print('字符串时间转化为结构化时间:',time.strptime('2021-05-14 20:09:00','%Y-%m-%d %X'))

i. time.asctime()—结构化时间转化为默认格式,加不加参数均可

print(time.asctime(time.localtime()))

j. time.ctime()—时间戳转化为默认格式,加不加参数均可

print(time.ctime(time.time()))

k. datetime.datetime.now()—标准化格式时间

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

2. random—随机数模块

a. random.random()—随机产生0-1之间的浮点数

import random
print('随机产生0-1之间的随机数:',random.random())

b. random.randint(n,m)—随机产生n-m之间的整数,n与m可以取到

print('随机产生1-8之间的整数:',random.randint(1,8))

c. random.randrange(n,m)—随机产生n-m之间的整数,n与m取不到

print('随机产生1-8之间的整数:',random.randrange(1,8))

d. random.choice([a,b,c])—随机从中选取一个

print('随机选取一个数:',random.choice([1,2,3]))

e. random.sample([a,b,c],n)—随机从中选取n个

print('随机选取两个数:',random.sample([1,2,3],2))

f. random.uniform(n,m)—随机产生n-m之间的浮点数

print('随机选取两个数:',random.sample([1,2,3],2))

g. random.shuffle(n)—打乱n中的字符排列顺序

n = [1,2,3,4,5,6]
print('打乱之前的顺序:',n)
random.shuffle(n)
print('打乱之后的顺序:',n)

3. sys—运行环境模块

a. sys.path—查看环境配置变量

import sys
print('当前环境变量:',sys.path)

b. sys.path.append(r’路径’)—添加临时环境

sys.path.append(r'd:\python')
print('添加后的环境变量:',sys.path)

c. sys.argv—程序本身路径,以列表形式输出

print('程序本身路径:',sys.argv)

d. sys.exit(n)—退出程序,正常退出exit(0)

e. sys.version—获取python解释程序的版本信息

print('python解释程序的版本信息:',sys.version)

f. sys.platform—返回操作系统平台名称

print('操作系统平台名称:',sys.platform)

g. sys.stdout.write(’*’)—进度条的实现

4. os—操作系统功能模块

a. os.getcwd()—获取当前工作目录

import os
print('获取当前工作目录:',os.getcwd())

b. os.chdir(‘文件夹名’)—文件夹名,改变为同级其他文件目录;…改变为上一级目录

os.chdir('venv')
print('改变后的当前工作目录:',os.getcwd())

c. os.curdir—返回当前目录,相当于 ‘.’

os.chdir(os.curdir)
print('当前文件所在文件夹:',os.getcwd())

d. os.pardir—获取当前目录的父亲目录字符串名,相当于 ‘…’

os.chdir(os.pardir)
print('当前文件根目录文件夹名:',os.getcwd())

e. os.makedirs(‘w1/w2’)—递归生成目录文件

os.makedirs('w1/w2')

f. os.removedirs()—若文件夹内容为空,则也递归删除上一层;若文件夹有内容,则只删除目标文件夹(删除目录必须在工作目录下)

os.removedirs('w3')

g. os.mkdir()—生成单级目录

os.mkdir('w3')

h. os.rmdir()—删除单级空目录(不空则无法删除)

os.rmdir('w3')

i. os.listdir()—以列表的形式打印当前目录下的文件名称

print('当前目录下的文件名称:',os.listdir())

j. os.stat(‘文件名’)—查看文件的详细信息

print('文件的详细信息:',os.stat('venv'))

k. os.sep—输出操作系统特定的路径分隔符,win:\,linux:/

print('操作系统特定的路径分隔符:',os.sep)

l. os.linesep—输出当前平台使用的行终止符,win:\r\n,linux:\n

print('当前平台使用的行终止符:',os.linesep)

m. os.pathsep—输出用于分割文件的字符串,win:;,linux: :

print('分割文件的字符串:',os.pathsep)

n. os.name—输出当前平台指示字符串,win:nt,win:posix

print('当前平台指示字符串:',os.name)

o. os.system()—显示命令信息

print('命令信息:',os.system('help'))

p. os.environ—获取系统环境变量

print('系统环境变量:',os.environ)

q. os.path.abspath(‘path’)—返回path规范化的绝对路径

print('返回规范化的绝对路径:',os.path.abspath('模块.py'))

r. os.path.split(‘path’)—分割path目录路径与文件名,并存入元组打印得出

print('分割目录路径与文件名:',os.path.split('模块.py'))

s. os.path.dirname(‘path’)—返回path的目录

print('返回目录:',os.path.dirname('模块.py'))

t. os.path.basename(‘path’)—返回path最后的文件名

print('返回目录最后的文件名:',os.path.basename('模块.py'))

u. os.path.exists(‘path’)—判断path是否存在

print('文件是否存在:',os.path.exists('w1'))

v. os.path.isabs(‘path’)—判断path是否为绝对路径

print('路径是否为绝对路径:',os.path.isabs('模块.py'))

w. os.path.isfile(‘path’)—判断path是否是一个存在的文件

print('文件是否存在:',os.path.isfile('模块.py'))

s. os.path.isdir(‘path’)—判断path是否是一个存在的目录

print('目录是否存在:',os.path.isdir('w1'))

y. os.path.join(a,b)—合并路径(路径拼接),前路径,后路径

z. os.path.getatime(‘path’)—返回path所指向文件/目录的最后存取时间

print('文件/目录的最后存取时间:',os.path.getatime('w1'))

z1. os.path.getmtime(‘path’)—返回path所指向文件/目录的最后修改时间

print('文件/目录的最后存取时间:',os.path.getmtime('w1'))

5. re—正则表达式模块josn模块

re.findall()—字符匹配

a. 普通字符

import re
print(re.findall('alex','healexss')) #查询到,输出目标字符串,列表形式输出
print(re.findall('alex','healxss'))  #查询不到,输出空列表
print(re.findall('alex','alexalex'))  #有几个输出几个

b. 元字符

print(re.findall('a..x','healexss'))  #..通配符,除了换行符均可匹配,一个点代表一个字符
print(re.findall('a...x','healexss'))
print(re.findall('^a..x','healexss'))  #查看开头是否为目标字符串
print(re.findall('^a..x','alexhealexss'))
print(re.findall('a..x$','healexss'))  #查看结尾是否为目标字符串
print(re.findall('a..x$','healexssalex'))

c. 重复符号

print(re.findall('ab*','abcmacda*'))  #匹配前面的子表达式零次或多次--->a,ab,abb,abbb...
print(re.findall('ab+','abcmacda*'))  #匹配前面的子表达式一次或多次--->ab,abb,abbb...
print(re.findall('ab?','abcmacda*'))  #匹配前面的子表达式零次或一次--->a,ab
print(re.findall('a{2}','abcmaacda*'))  #{n},n是一个非负整数,匹配前面的子表达式n次--->aa,n个a
print(re.findall('a{1,}','abcmaacda*'))  #{n,},n是一个非负整数,匹配前面的子表达式n次或大于n次
print(re.findall('a{1,3}','abcmaacda*'))  #{n,m},m和n均为非负整数,其中n<=m,匹配前面的子表达式n次到m次
# {0,}==*,{1,}==+,{0,1}==?,{n}==n次

d. [ ]中无特殊符号(-特例)

print(re.findall('a[b*c]','ab*cmacda*'))  #匹配a加[]内任意一个--->ab,a*,ac
print(re.findall('a[a-z]','ab*cmacda*'))  #匹配a加[a-z]内,a-z任意一个--->aa,ab,ac...
print(re.findall('a[0-9]','ab*cmacda*'))  #匹配a加[0-9]内,a-z任意一个--->a0,a1,a2...
print(re.findall('a[a-z]*','ab*cmacda*'))  #后面加上*表示所有
print(re.findall('a[^a-h]','ab*cmacda*'))  #后面加上^表示非,除a-h之外均可以
print(re.findall('[a-z]','ab*cmacda*'))  #只有[],按照[]内一个一个匹配

e. \让有功能的字符变无功能,让无功能的字符变有功能

# \d--->[0-9]  \D--->[^0-9]
# \s--->[\t\n\r\f\v]  \S--->[^空白字符]
# \w--->[z-a A-Z 0-9]  \W--->[^z-a A-Z 0-9]
# \b--->[0-9]  \B--->[^0-9]
# \d--->匹配一个特殊字符边界,如空格,¥,#等

f. 三者输出结果相同,但意义不同

print(re.findall('www.baidu','www.baidu'))  #  .是通配符
print(re.findall('www\.baidu','www.baidu'))  #  \.取消功能
print(re.findall('ww\w.baidu','www.baidu'))  #  \w赋予功能

g. | 或

print(re.findall('ka|b','kamks1b2'))  # ka或b

h. 分组

a = re.search('(?P<name>[a-z]+)(?P<age>\d+)','alex36wu21').group('name')  #匹配第一个符合字符
print(a)
b = re.match('\d+','56asdf12cd').group()  #匹配对象必须在开头,从而不常用
print(b)
print(re.split(' ','I love you'))  #根据匹配对分割,这里是空格
print(re.split('ab','abc'))  #先分割a('','bc'),再分割b('','','c')
print(re.sub('\d+','A','565scx56a2'))  #替换,A替换数字

i. 编译,提前定义好编译规则

com = re.compile('\d+')  #编译规则
print(com.findall('1278xasd15564cd'))

j. 迭代器

ret = re.finditer('\d+','sa12a5sac3')
print(next(ret).group())  #--->12
print(next(ret).group())  #--->5
print(next(ret).group())  #--->3

k. 优先级

print(re.findall('www\.(baidu|163)\.com','df www.163.com123'))  #存在小括号,小括号内优先级大
print(re.findall('www\.(?:baidu|163)\.com','df www.163.com123'))  #?:去除小括号优先级
print(re.findall('www\.baidu|163\.com','df www.163.com123'))  #没有括号,以管道符或为分界线
print(re.findall('www\.[baidu|163]\.com','df www.163.com123'))  #大括号不存在优先级

6. josn—json文本格式模块

a. json.dumps()—将数据转化为json类字符串

b. json.loads()—将json类字符串转化为原来的数据类型

info = {1:'I',2:'Love',3:'You'}
a = json.dumps(info)
print(a)
b = json.loads(a)
print(b)

c. json.dump(a,f)—将数据转化为json类字符串并写入f当中

d. f = json.load(a)—将json类字符串转化为原来的数据类型并从f中读出

7. hashlib—加密模块

import hashlib
obj = hashlib.md5()  #调用md5加密方式,还有sha256常用
obj.update('li'.encode('utf-8'))  #需加密的字符串
print(obj.hexdigest())  #加密

总结

这几个模块算是比较重要的,平时比较常用,我只说重要的,嘻嘻嘻,有能力的同样可以借助网络去学习其他模块,加油。

 类似资料: