"""
random
random.random() # 0-1之间的小数
random.uniform() # 小数 (m,n)
random.randint() 随机整数 [m,n]
random.choice() 从列表中随机选择一个
random.sample() 从列表中随机选择n个
random.shuffle() 打乱
time模块
时间戳
time.time() 当前系统时间, 从1970-01-01 08:00:00
格式化时间
time.strftime("%y-%m-%d %H:%M:%S") 字符串格式化时间 f: format
结构化时间
time.localtime() 本质是一个元组. 用来做转化的
时间戳转化成格式化时间
# n = 180000000
# # 转化成结构化时间
# struct_time = time.localtime(n)
# # 转化成格式化时间
# str_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
#
# print(str_time)
# # 把一个格式化时间转化成数字
# date = input("请输入时间(yyyy-MM-dd HH:mm:ss):")
# # 把字符串转化成结构化时间
# struct_time = time.strptime(date, "%Y-%m-%d %H:%M:%S") # p: parse 转化
# # 变成时间戳
# n = time.mktime(struct_time)
os和操作系统相关
1 os.mkdir() 创建一个文件夹
2 os.makedirs() 创建一个多级目录
3 os.rmdir()
4 os.removedirs()
os.listdir() 列出目标文件夹内的所有文件
os.path.isfile
os.path.isdir
os.path.exists
os.path.join
os.path.getsize() 文件大小
sys 和python解释器相关
sys.path 模块的搜索路径
sys.argv 获取命令行参数
collections
namedtuple
Point = namedtuple("Point", ["x", "y"]) # 创建了一个类
p1 = Point(1,2) # 创建一个对象
print(p1)
print(p1.x)
print(p1.y)
OrderedDict
不用了
Counter
计数器
c = Counter("哈哈哈哈哈哈")
print(c)
deque
双向队列
数据结构
Stack 栈, 先进后出
Queue 队列, 先进先出
class StackFullError(Exception):
pass
class StackEmptyError(Exception):
pass
class Stack:
def __init__(self, size):
self.size = size
self.lst = []
self.top = 0 # 下一个元素准备装的位置
def push(self, el):
# self.lst[self.top] = el # 报错
if self.top == self.size:
raise StackFullError('满了')
self.lst.insert(self.top, el)
self.top += 1 # 栈顶指针. 向上移动
def pop(self):
if self.top == 0:
raise StackEmptyError("空的")
self.top -= 1 # 先移动站定指针
data = self.lst[self.top]
del self.lst[self.top]
return data
s = Stack(6)
s.push("马卫华1")
s.push("马卫华2")
s.push("马卫华3")
s.push("马卫华4")
s.push("马卫华5")
s.push("马卫华6")
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
hashlib模块
pickle模块
dumps 序列化成bytes字节
loads 发序列化成对象
dump 序列化之后的bytes写入文件
load 从文件导出bytes. 反序列化成对象
json模块
dumps 数据转化成json
loads json转化回数据
dump 序列化之后的bytes写入文件
load 从文件导出bytes. 反序列化成对象
python json
None null
True true
False false
dict {}
list []
re模块
正则表达式
普通字符 a b ab
元字符
. 除了换行符以外的其他所有内容
\w 数字, 字母, 下划线
\d 数字
\s 空白
\b 单词的结尾
\W 除了数字, 字母, 下划线
\D 除了数字
\n
\t
^ 开头
$ 结尾
[abc] 字符组
[^abc]
() 分组 \1
|
量词:
* 零次或多次
+ 1次或多次
? 0次或1次
{n} n次
{m,n} m次到n次
{m,} m次到更多次
贪婪匹配
*
+
?
惰性匹配
a*?m
re模块
search 全文检索
match 从头开始 ^
import re
it = re.finditer(r"(?P<shuzi>\d+)", "你好啊, 我叫赛利亚123")
print(it.__next__().group("shuzi"))
re.search()
re.match()
re.sub()
re.split()
模块和包
模块: 我们写的py文件
import xxx
from xxx import xxxxx
__name__
包: (留坑)
sys.path
启动文件必须在包外面
相对导入
相对当前目录导入
. 当前
.. 上级目录
绝对导入
从项目根目录导入
"""
import time
# print(time.localtime())
# n = 180000000
# # 转化成结构化时间
# struct_time = time.localtime(n)
# # 转化成格式化时间
# str_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
#
# print(str_time)
# # 把一个格式化时间转化成数字
# date = input("请输入时间(yyyy-MM-dd HH:mm:ss):")
# # 把字符串转化成结构化时间
# struct_time = time.strptime(date, "%Y-%m-%d %H:%M:%S") # p: parse 转化
# # 变成时间戳
# n = time.mktime(struct_time)
#
# print(n)
#
# time.gmtime() # 格林尼治时间
# time.localtime() # 本地化时间
# import os
# os.makedirs("胡一菲/曾小贤/小姨妈/吕子乔/雷佳音")
# os.path.getsize()
#
from collections import namedtuple, OrderedDict, deque, Counter
# c = Counter(["马卫华","马卫华", "周杰伦"])
# print(c)
#
# Point = namedtuple("Point", ["x", "y"]) # 创建了一个类
# p1 = Point(1,2) # 创建一个对象
# print(p1)
# print(p1.x)
# print(p1.y)
# class Point:
# def __init__(self,x, y):
# self.x = x
# self.y = y
# import queue
#
# q = queue.Queue()
# q.put("马卫华1")
# q.put("马卫华2")
# print(q.get())
# print(q.get())
#
# from collections import deque
# dq = deque()
# dq.append("今夜在浪漫剧场")
# dq.append("我想吃掉你的胰脏")
# dq.append("风来坊")
#
# dq.appendleft("流浪地球")
# dq.appendleft("新喜剧之王")
# dq.appendleft("飞驰人生")
#
# print(dq)
#
# print(dq.pop())
# print(dq.pop())
# print(dq.pop())
# print(dq.popleft())
# print(dq.popleft())
# print(dq.popleft())
# import hashlib
#
# md5 = hashlib.md5(b'flkja123sdlfjlasdkfjkladjflkdasjflkdasjfkldajfkla12312321dsjfkldasjfkldas123jfkladsjfkl')
#
# s = "alex"
# # f = open("", mode="rb")
# # for line in f:
# # md5.update(line)
# md5.update(s.encode("utf-8"))
#
# psw = md5.hexdigest()
# print(psw)