datetime模块
与time时间模块类型 都是与时间相关的模块
import datetime # 导入datetime模块
res = datetime.datetime.today()
print(datetime.datetime.now()) # 当前时间 2022-07-15 14:53:25.023153
print(datetime.datetime.today()) # 当前时间 2022-07-15 14:53:25.023153
print(datetime.date.today()) # 2022-07-15
print(datetime.datetime.utcnow()) # 东 2022-07-15 6:53:25.023153
print(res.year) # 2022 表示年
print(res.month) # 7 表示月
print(res.isoweekday()) # 5 表示周几
date # 表示年月日
datetime # 表示年月日 时分秒
# 时间差值
res1 = datetime.timedelta(days=2)
print(res + res1) # 2022-07-17 15:01:33.666673
print(res - res1) # 2022-07-13 15:01:33.666673
timedelta括号内有很多参数 没有的时间可以通过换算得来
os模块
os模块主要是跟当前程序所在的操作系统打交道
import os # 导入os模块
1.创建目录
os.mkdir(r'aaa') # 创建只单级目录
os.mkdir # 不能创多级目录 会报错
os.makedirs(r'a\b\c') # 能创建单级目录 同时也能创建多级目录
2.删除目录
os.rmdir(r'aaa') # 可以删除单级目录 并且目录下什么都不能有 不支持删除多目录
os.removexattr(r'a\b\c') # 针对有数据的目录无法删除 由内而外删除空目录 直到有数据的目录为止
3.列举指定路径下的文件名称(当前下文件,目录)
可以给它一个路径也可以不给 不给默认是当前执行文件下所有的文件名称 以列表形式打印
print(os.listdir(r'D:\Users\Lisony\day24')) # ['.idea', 'datetime模块.py','os模块.py',]
print(os.listdir() # ['.idea', 'datetime模块.py','os模块.py',]
print(os.listdir(r'D:\\')) # 电脑D盘路径下所有文件
4.重命名文件 删除文件
os.rename(r'a.txt',r'b.txt') # 重命名文件
os.remove(r'b.txt') # 删除文件
5.获取当前所在路径(当前工作路径)
绝对路径
print(os.getcwd()) # D:\Users\Lisony\day24
os.chdir(r'..') # 切换路径
print(os.getcwd()) # D:\Users\Lisony
6.与程序启动文件相关
print(os.path.abspath(__file__)) # D:\Users\Lisony\day24\os模块.py 获取当前文件绝对路径
print(os.path.dirname(__file__)) # D:/Users/Lisony/day24 获取当前执行文件所在目录路径
import sys # 导入sys模块
res = os.path.dirname(os.path.dirname(__file__)) # 嵌套使用提高兼容性
sys.path.append(res) # 添加到程序环境程序变量
7.判断路径是否存在文件、目录
目录(文件夹)
print(os.path.exists(r'ATM')) # True
print(os.path.exists(r'aaa')) # False
路径
print(os.path.exists(r'os模块.py')) # True
print(os.path.exists(r'a.txt')) # False
print(os.path.isfile(r'ATM')) # False 文件夹
print(os.path.isfile(r'os模块.py')) # True 文件
8.拼接路径
relative = 'b.txt' # 相对路径
absolute = r'D:\Users\Lisony\day24\ATM' # 绝对路径
res = os.path.join(absolute, relative) # 括号内可有写多个
print(res) # D:\Users\Lisony\day24\ATM\b.txt
'''
join方法可有自动识别当前的操作系统并自动识别切换正确的分隔符
windows用\ max用/
'''
9.获取文件大小 bytes为单位
print(os.path.getsize(r'b.txt')) # 32
b.txt:holle欢迎鸡哥来到红浪漫 # 英文一个中文三个 结果32
sys模块
sys模块主要是跟python解释器打交道
import sys # 导入sys模块
print(sys.path) # 当前执行文件所在的系统变量 结果打印的是列表
print(sys.version) # 查看当前解释器版本信息
print(sys.platform) # 查看当前系统平台
print(sys.argv) # 当前文件所在路劲 ['D:/Users/Lisony/day24/sys模块.py']
sys.argv是在命令行起作用的 不是在当前文件起作用 第一个是程序本身路径 想要运行不要在pycharm直接运行 py文件pycharm执行也可以用cmd终端执行
json模块
json模块称之为序列化模块
json模块就是不同的编程语言直接数据交互必备的模块(处理措施)
json格式的数据
数据基于网络传输肯定是二进制 在python中只有字符串可以调用encode方法转换成二进制 所以json格式的数据也属于字符串类型
json格式有个非常明显的特征
首先肯定是字符串 其次引号是具有标识性的双引号
dict = {'name': 'jason', 'pwd': 123}
# 将上述字典保存到文件中 并将来读取出来后还是字典
with open(r'b.txt', 'w', encoding='utf8') as f:
f.write(str(dict))
with open(r'b.txt', 'r', encoding='utf8')as f:
data = f.read()
print(data,type(data)) # {'name': 'jason', 'pwd': 123} <class 'str'>
import json # 导入json模块
res = json.dumps(dict) # 序列化 将其他数据类型转换成json格式字符串
print(res, type(res)) # {"name": "jason", "pwd": 123} <class 'str'>
res1 = json.loads(res) # 反序列化 将json字符串装换成对应编程语言中的数据类型
print(res1,type(res1)) # {'name': 'jason', 'pwd': 123} <class 'dict'>
"""
dumps() 将其他数据类型转换成json格式字符串
loads() 将json格式字符串装换成对应的数据类型
dump() 将其他数据类型以json格式字符串写入文件
load() 将文件中json格式字符串读取出来并转换成对应的数据类型
"""
补充知识
d1 = {'name': 'joker要干饭了', 'pwd': 123}
res = json.dumps(d1)
res1 = json.dumps(d1, ensure_ascii=False)
print(res) # {"name": "joker\u8981\u5e72\u996d\u4e86", "pwd": 123}
print(res1) # {"name": "joker要干饭了", "pwd": 123}
# dumps序列化的时候遇到非英文的字符会自动转码 可以使用ensure_ascii=False取消转码