常用模块(未完待续)

一、time时间模块

1.时间戳

import time 
# 作用:从1970年到现在经过的秒数,用于时间间隔的计算
time.time()

# 具体案例
start = time.time()
print('猜猜我运行了几秒')
time.sleep(1)  # 作用:让程序在此处暂停1秒
stop = time.time()
print('运行时间为:{}'.format(stop - start))

2.按照某种格式显示的时间

# 作用:用于展示时间
print(time.strftime('%Y-%m-%d  %H:%M:%S %p'))
print(time.strftime('%Y-%m-%d  %X'))

# 运行结果
2021-04-07  09:37:24 AM
2021-04-07  09:37:24

3.结构化的时间

# 作用:将时间结构化,赋予不同的变量名,用于单独获得时间的某一部分
obj = time.localtime()
print(obj)
print(obj.tm_year)

# 运行结果
time.struct_time(tm_year=2021, tm_mon=4, tm_mday=7, tm_hour=19, tm_min=6, tm_sec=37, tm_wday=1, tm_yday=124, tm_isdst=0)
2021

4.datetime模块

import datetime
# 作用:将时间用作运算
print(datetime.datetime.now())

# 算出三天之后的时间
print(datetime.datetime.now() + datetime.timedelta(days=3))

# 运行结果
2021-04-07 11:17:07.621394
2021-04-10 11:17:07.621394

二、random随机模块

import random

print(random.random())  # 大于0且小于1之间的小数

print(random.randint(1,100))  # 随机取一个1到100之间的整数,包括1和100

print(random.randrange(1,10)) # 顾头不顾尾,取一个1到9之间的整数

print(random.choice([1,'23',[4,5]]))  # 从列表中随机选一个

print(random.sample([1,'23',[4,5]],2))  # 选列表元素任意2个组合,尾部的数字是几,就选几个组合

print(random.uniform(3,5))  # 大于3小于5的小数,如3.927109612082716

item=[1,3,5,7,9]
random.shuffle(item)  # 打乱item的顺序,相当于"洗牌"
print(item)

1.应用案例

# 编写4位随机验证码
def make_code(size=4):
    res = ''
    for i in range(size):
        num = str(random.randint(0, 9))
        alpha = chr(random.randint(65, 90))
        res += random.choice([num, alpha])
    return res


print(make_code())

三、序列化与反序列化

序列化就是把内存的数据类型转换成一个特定的格式内容,该格式的内容可以用于存储或者传输给其他平台使用,而反序列化就是把特定格式再转回成内存的数据类型

1、json模块

json就是一种序列化格式,可以把对象序列化成字符串类型,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。

import json

dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))  # <class 'dict'>,dic是一个字典类型

j=json.dumps(dic)  # dumps将dic序列化,然后赋值给j
print(type(j))  # <class 'str'>,变成字符串类型了

c = json.loads(j)  # loads是反序列化,将上面的j又反序列化成原本的类型,赋值给了c
print(type(c))  # <class 'dict'>,c又变成字典类型了

将一个字典序列化成json格式,保存在文件里,操作如下

import json

user_dic = {
    'name': 'poco',
    'sex': 'male',
    'age': '18'
}
# 序列化
with open('poco.json', 'wt', encoding='utf-8') as f1:
    json.dump(user_dic, f1)  # 第一个参数是要序列化的内容,第二个参数是打开的文件句柄

# 反序列化 
with open('poco.json', 'rt', encoding='utf-8') as f1:
    json_res = f1.read()
    print(json.loads(json_res))

四、re模块正则表达式

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

# 一对一的匹配
# 'hello'.replace(old,new)
# 'hello'.find('pattern')

# 正则匹配
import re
# \w与\W
print(re.findall('\w','hello egon 123')) 
# ['h', 'e', 'l', 'l', 'o', 'e', 'g', 'o', 'n', '1', '2', '3']

print(re.findall('\W','hello egon 123')) 
# [' ', ' ']

# \s与\S
print(re.findall('\s','hello  egon  123')) 
# [' ', ' ', ' ', ' ']
print(re.findall('\S','hello  egon  123')) 
# ['h', 'e', 'l', 'l', 'o', 'e', 'g', 'o', 'n', '1', '2', '3']

#\n \t都是空,都可以被\s匹配
print(re.findall('\s','hello \n egon \t 123')) 
# [' ', '\n', ' ', ' ', '\t', ' ']

#\n与\t
print(re.findall(r'\n','hello egon \n123')) # ['\n']
print(re.findall(r'\t','hello egon\t123')) # ['\n']

#\d与\D
print(re.findall('\d','hello egon 123')) # ['1', '2', '3']
print(re.findall('\D','hello egon 123')) 
# ['h', 'e', 'l', 'l', 'o', ' ', 'e', 'g', 'o', 'n', ' ']

#\A与\Z
print(re.findall('\Ahe','hello egon 123')) # ['he'],\A==>^
print(re.findall('123\Z','hello egon 123')) # ['he'],\Z==>$

此处应有图

五、logging日志模块

六、OS系统模块

os模块是与操作系统交互的一个接口,可以处理文件和目录这些我们日常手动需要做的操作

os.getcwd()  # 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  # 改变当前脚本工作目录;相当于shell下cd
os.curdir  # 返回当前目录: ('.')
os.pardir  # 获取当前目录的父目录字符串名:('..')
os.makedirs('文件夹1/文件夹1-1')  # 可生成多层递归目录
os.removedirs('文件夹1\文件夹1-1')  # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')  # 生产一个叫dirname的目录
os.rmdir('dirname')  # 删除名为dirname的目录,若目录不为空则报错
os.listdir('dirname')  # 以列表类型显示dirname目录下所有文件和子目录,包括隐藏文件
os.remove('文件1.py')  # 删除一个文件
os.rename("dirname","newname")  # 重命名文件/目录
os.stat('newname')  # 获取文件/目录信息
os.sep  # 输出操作系统特定的路径分隔符,Windows为\
os.linesep  # 输出当前平台使用的行终止符,win下为\t\n
os.pathsep  # 输出用于分割文件路径的字符串,win下为;
os.name  # 输出字符串指示当前使用平台,win为nt
os.system("tasklist")  # 运行shell命令,直接显示

os.environ  # 获取系统环境变量
os.path.abspath("os模块.py")  # 补全该文件或目录的绝对路径
os.path.split(r"D:\py-wh\练习\os模块.py")  # 将path分割成目录和文件名,然后以元组返回
os.path.dirname(r"D:\py-wh\练习\os模块.py")  # 返回path的目录。其实就是os.path.split("xxx")的第一个元素
os.path.basename(r"D:\py-wh\练习\os模块.py")  # 返回path最后的文件名。即os.path.split("xxx")的第二个元素,如果最后没有文件,那么就会返回空值。
os.path.exists(r"D:\py-wh\练习\假装有文件.py")  # 判断path是否存在,返回的结果是True或False
os.path.isabs(r"D:\py-wh\练习")  # 如果path是绝对路径,返回True,不是则返回False
os.path.isfile("os模块.py")  # 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(r"D:\py-wh")  # 如果path是一个存在的目录,则返回True。否则返回False
os.path.join("D:\\",'a','b','c.txt')  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime("a.txt")  # 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime("a.txt")  # 返回path所指向的文件或者目录的最后修改时间
os.path.getsize("a.txt")  # 返回path的大小,字节单位

os.path.normcase(r'c:/windows/system32/')  # 针对Windows系统的操作,可以将路径中的字符全变成小写,并将斜杠/变成反斜杠\
os.path.normpath(r'D:\py-wh\练习\..\..')  # \..代表返回上一级目录,这里出现两个,代表返回上一级的上一级,也就是"D:\

1.OS路径处理

如何灵活的返回 上一级的上一级路径

print(__file__)  # __file__是一个可以快速获取当前文件的绝对路径的内置变量

# 第一种方式:用dirname返回目录的功能实现
print(os.path.dirname(os.path.dirname(__file__)))

# 第二种方式
print(os.path.normpath(os.path.join(__file__,"..",'..')))

七、sys模块

sys.argv       # 命令行参数List,第一个元素是程序本身路径
sys.exit(n)    # 退出程序,正常退出时exit(0)
sys.version    # 获取Python解释程序的版本信息
sys.maxint     # 最大的Int值
sys.path        # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform     # 返回操作系统平台名称

八、shutil模块

九、shelve模块

十、suprocess模块

十一、hashlib模块

十二、xml模块

十三、configparser模块

posted @ 2021-04-07 11:19  黑影Poco  阅读(109)  评论(0)    收藏  举报