本文最后更新于 202 天前,其中的信息可能已经有所发展或是发生改变。
一、time模块
import time
#时间戳
print(time.time())
#格式化的字符串形式 2024-3-6 21:21:21 Wednesday
#获取到的是字符串
time.strftime('%Y-%m-%d %H:%M:%S %A')
#结构化时间 time.struct_time(tm_year=2024, tm_mon=3, tm_mday=6, tm_hour=21, tm_min=30, tm_sec=19, tm_wday=2, tm_yday=66, tm_isdst=0)
#获取到的是整形
res = time.localtime()
print(res)
print(res.tm_year)
二、datetime模块
import datetime
res = datetime.datetime.now() # utcnow()世界标准时间
print(res)
print(res.replace(microsecond = 0))
res2 = res + datetime.timedelta(days=-25) #可以直接进行时间的运算
print(res2)
# 时间戳 -localtime/gmtime-> 结构化的时间 -strftime-> 格式化的字符串时间
# 时间戳 <-mktime- 结构化的时间 <-strptime- 格式化的字符串时间
#运行结果
#2024-03-07 10:37:16.488409
#2024-03-07 10:37:16
#2024-02-11 10:37:16.488409
三、random模块
import random
print(random.uniform(1,10)) #随机传一个1-10的数
print(random.randint(1,100)) #随机传一个1-100的随机整数 (闭区间)
print(random.randrange(1,3)) #随机一个1-3的整数 (左闭右开)
print(random.choice([1,23,41,564])) #从序列中随机取一个元素(可以是字符串、列表、字典、range对象等)
print(random.sample([1,23,41,564],2)) #取值的个数
li = [1,2,3,4]
random.shuffle(li) #打乱
print(li)
#运行结果
#3.124021911327833
#60
#1
#41
#[564, 41]
#[1, 3, 4, 2]
四、os模块
五、sys模块
import sys
# sys.path
# sys.argv
六、shutil模块
import shutil
shutil.copystat('a.txt','b.txt') #拷贝文件的状态信息,如:atime,mtime,ctime等(只拷贝状态信息,b.txt必须存在)
shutil.copymode('','') # 拷贝文件的权限(只拷贝a.txt的权限,b.txt必须存在)
#拷贝文件
shutil.copyfileobj(open(''),'r'),open('','w')
shutil.copyfile('','')
shutil.copy('','') #拷贝文件以及权限
shutil.copy2('','') #拷贝文件以及状态信息
#拷贝文件夹,ignore的意思是排除
shutil.copytree('data1','data2',ignore = shutil.ignore_patterns('*.py','user*'))
#移动文件/文件夹,如果移动的路径相同,只是名字不同,则相当于重命名
shutil.move('data1','data2')
#创建压缩包('zip','tar','bztar','gztar')
shutil.make_archive('path','zip',root_dir = 'data')
七、tarfile模块
八、zipfile模块
九、json模块
# 序列化 :把内存中的数据类型转成一种特定的格式,这种特定的格式可以用于存储,或者传输给其它平台使用
#内存中的数据类型 --> 序列化 --> 特定的格式(json/pickle)
#内存中的数据类型 <-- 反序列化 <-- 特定的格式(json/pickle)
# 用途:
# 1. 存档
# 2. 跨平台数据交互(只能用json,pickle是python专用的格式)
# json模块
import json
#序列化
dic = {'name':'林某','age':18,'身高':170.0,'married':True,'hobby':['吃','喝','玩','乐']}
json_res = json.dumps(dic,ensure_ascii = False) # ensure_ascii = False 显示中文,不翻译出来也不会影响反序列化
print(json_res)
print(type(json_res))
#反序列化
print(json.loads(json_res))
print(type(json.loads(json_res)))
# #直接把序列化的内容写入文件
# with open('test.json','wt',encoding='utf-8') as f:
# json.dump(dic,f)
#运行结果
#{"name": "林某", "age": 18, "身高": 170.0, "married": true, "hobby": ["吃", "喝", "玩", "乐"]}
#<class 'str'>
#{'name': '林某', 'age': 18, '身高': 170.0, 'married': True, 'hobby': ['吃', '喝', '玩', '乐']}
#<class 'dict'>
十、pickle模块
# pickle模块
import pickle
dic = {'name':'林某','age':18,'身高':170.0,'married':True,'hobby':['吃','喝','玩','乐']}
pickle_res = pickle.dumps(dic,protocol = 0) #防止乱码:protocol = 0
with open('test.pickle','wb')as f:
f.write(pickle_res)
#也可以写成
with open('test.pickle','wb')as f:
pickle.dump(dic,f,protocol = 0)
十一、configparse模块
# 配置文件 (后缀名为ini/cfg)
import configparser
config = configparser.configparser()
config.read('test.ini',encoding = 'utf-8')
print(config.sections()) #得到配置文件中的sections 如有一个 'db'
print(config.option('db')) #获取db下的配置项的key
print(config.option('db')) #获取db下的配置项的key和value
十二、subprocess模块
#subprocess.Popen()
import subprocess
obj = subprocess.Popen('终端命令',
shell = True,
stdout =subprocess.PIPE,
stderr = subprocess.PIPE)
res = obj.stdout.read() #返回结果,结果为bytes类型,相比于os.system方法,不会出现乱码问题
print(res)
print(res.decode('utf-8')) #解码
error_res = obj.stderr.read() # 错误的结果
print(error_res)
print(error_res.decode('utf-8'))