# json、os、sys、random、string、time、hashlib
# json模块
import json
# json串就是字符串。
d = {
'car': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉1': {'color': 'red', 'price': 100, 'count': 50},
}
res = json.dumps(d, indent=8, ensure_ascii=False) # dumps把list、字典转成json,indent多少缩进,ensure_ascii可以显示中文
f1 = open('f1', 'w', encoding='utf-8')
f1.write(res)
f1 = open('f1', encoding='utf-8')
res = f1.read()
dict_res = json.loads(res) # loads把json串变成python的数据类型
print(dict_res)
f1 = open('f1', 'w', encoding='utf-8')
json.dump(d, f1, ensure_ascii=False, indent=4) # dump自动帮你写入文件,第一个参数是数据,第二个是文件对象
f1 = open('f1', encoding='utf-8')
print(json.load(f1)) # load自动读文件
# os模块
import os
print(os.getcwd()) # 取当前工作目录
# print(os.chdir("..")) # 更改当前目录
# print(os.getcwd())#取当前工作目录
# print(os.curdir) # 当前目录,相对路径
# print(os.pardir) # 父目录,相对路径
print(os.mkdir("test1")) # 创建文件夹
print(os.rmdir("test1")) # 只能删除空文件夹
print(os.remove("../day4/5.png")) # 删除文件,不能删文件夹。
print(os.listdir('c://')) # 列出一个目录下的所有文件
os.rename("test", "test1") # 重命名
# print(os.stat("笔记.txt"))#获取文件信息
print(__file__) # __file__就是这个文件的绝对路径
print(os.path.abspath(__file__)) # 获取绝对路径
print(os.path.split("c:\usr\hehe\hehe.txt")) # 分割路径和文件名
# print(os.path.dirname("c:\usr\hehe\hehe.txt")) # 获取父目录
# print(os.path.basename("c:\usr\hehe\hehe.txt")) # 获取最后一级,如果是文件显示文件名,如果是目录显示目录名
print(os.path.exists("c://test2")) # 目录/文件是否存在
print(os.path.isfile(r"E: xzday2.zip")) # 判断是否是一个文件
print(os.path.isdir(r"E: xzday2")) # 是否是一个文件夹
name = 'a.sql'
print(os.path.join("e", name)) # 拼接成一个路径
# print(os.sep) # 当前操作系统的路径分隔符
# print(os.linesep) # 当前操作系统的换行符
# print(os.pathsep) # 当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
# print(os.environ) # 当前系统的环境变量
# print(os.name) # 当前系统名称
# c://java/jre;c://python
# /usr/local:/root
# os.system('dir') #用来执行操作系统命令,只能执行,获取不到结果
# res = os.popen('ipconfig') #用来执行操作系统命令,并且获取到返回结果.read
# print(res.read())
# 常量,sys模块
import sys
print(sys.path) # 环境变量
print(sys.platform) # 看当前系统是什么
print(sys.version) # 看python的版本
print(sys.exit('程序退出'))
# quit('程序退出') # 退出程序
# print('hahaha')
# def fun(a):
# pass
# print(sys.argv) # 是获取运行python文件的时候 传入的参数
# 随机数模块
import random, string
print(random.randint(1, 199)) # 1-199随机取一个整数
print(string.digits) # 所有的数字0-9
print(string.ascii_lowercase) # 所有的小写字母
print(string.ascii_uppercase) # 所有的大写字母
print(string.ascii_letters) # 所有的小写字母+所有的大写字母
print(string.punctuation) # 所有的特殊字符
s = random.choice(['ybq', 'mpp', 'zhx', 'df']) # 随机取一个元素
res = random.sample(string.digits, 3) # 随机取N个元素
print(''.join(res))
res = random.uniform(1, 9) # 取随机小数0-9
print(res)
print(round(res, 2)) # 保留几位小数,如果四舍五入之后,最后一位小数是0,那么不显示
print(random.random()) # 取0-1之间随机小数
s1 = ['a', 'b', 'c', 'd', 'e']
random.shuffle(s1) # 洗牌,打乱顺序,只能传list
print(s1)
# time时间模块
import time
time.sleep(2) # 等待几秒
# 1、格式化好的时间 2018-1-14 16:42
# 2、时间戳 是从unix元年到现在所有的秒数
# 3、时间元组
# 想时间戳和格式化好的时间互相转换的话,都要先转成时间元组,然后才能转
print(int(time.time())) # 当前时间戳
cur_time = time.strftime('%Y-%m-%d %H:%M:%S')
# cur_time = time.strftime('%H%M%S') #取当前时间的格式化时间
print(time.gmtime()) # 默认取标准时区的时间元组,如果传入了一个时间戳,那么就把这个时间戳转换成时间元组。
print(time.timezone) # 和标准时间相差了几个小时
print(time.gmtime(1516005840)) # 标准时区。
cur_time1 = time.localtime(1516005840) # 默认取当前时区的时间元组,如果传入了一个时间戳,那么就把这个时间戳转换成时间元组。
res = time.strftime('%Y-%m-%d %H:%M:%S', cur_time1)
def timestampToStr(time_strmp, format='%Y%m%d%H%M%S'):
# 时间戳转格式化好的时间
cur_time = time.localtime(time_strmp) # 时间戳转成时间元组
res = time.strftime(format, cur_time) # 再把时间元组转成格式化好的时间
return res
def strToTimestamp(time_st, format='%Y%m%d%H%M%S'):
# 20181128113859
# 这个函数是格式化好的时间,转时间戳的
t = time.strptime(time_st, format) # 把格式化好的时间转成时间元组
res = time.mktime(t) # 时间元组转成时间戳
return res
# 通过时间戳换算前后三天时间
# 86400 * 3
# 32342 - 86400 * 3
# 加密模块
import hashlib
# md5加密,md5加密是不可逆的,不能被解密的。
ybm_pwd = '1234567' #
m = hashlib.md5() # md5加密
bytes_ybq = ybm_pwd.encode() # 把字符串转成bytes类型
m.update(bytes_ybq) # 加密,不能字符串,只能传bytes类型,二进制
# print(m.hexdigest()) #加密后的结果
def md5_password(st: str): # 限定了入参的类型,只能为string类型
bytes_st = st.encode() # 转成二进制类型
m = hashlib.md5(bytes_st) # 加密
return m.hexdigest() # 返回加密后的结果
# 其他加密方式
# sha_256 =hashlib.sha256(bytes_ybq)
# sha512 =hashlib.sha512(bytes_ybq)
# print(sha512.hexdigest())
import base64
s2 = 'hahaha'
byte_s = s2.encode() # 字符串变成二进制
res1 = base64.b64encode(byte_s) # base64编码
print(res1.decode()) # 把bytes转成字符串。
jie_mi_res = base64.b64decode(res1.decode()) # base64编码
print(jie_mi_res.decode())