Python常用内置模块日志、随机数、时间、OS与JSON详解
作者:毋语天
本文介绍了Python开发中常用的五大模块:日志、随机数、时间、系统文件操作及JSON数据处理,详细讲解了各模块的的常见函数及其应用场景,需要的朋友可以参考下
在 Python 开发中,内置标准库提供了大量开箱即用的实用模块,能极大提升开发效率。本文集中梳理五大常用模块——logging / loguru(日志)、random(随机数)、time(时间)、**os(系统交互)**和 json(数据序列化),覆盖日常使用频率最高的函数与用法。
一、日志模块
日志是排查问题的关键手段,Python 自带的 logging 是标准解决方案,而第三方库 loguru 则进一步简化了日志操作。
1. logging(标准库)
logging 内置五种日志级别,从低到高依次为:
| 级别 | 数值 | 含义 |
|---|---|---|
| DEBUG | 10 | 详细调试信息 |
| INFO | 20 | 正常运行信息 |
| WARNING | 30 | 警告,但程序仍可运行 |
| ERROR | 40 | 错误,部分功能受影响 |
| CRITICAL | 50 | 严重错误,程序可能崩溃 |
基础用法:
import logging
logging.debug("这是调试信息")
logging.info("程序启动")
logging.warning("磁盘空间不足")
logging.error("数据处理失败")
logging.critical("服务宕机")
默认输出到控制台,且只有 WARNING 及以上级别会被打印。可以通过 basicConfig 调整输出格式、等级和文件路径。
2. loguru(更友好的日志库)
loguru 是第三方库,以更简洁的 API 和更美观的输出著称。
安装:
pip install loguru
导入与使用:
from loguru import logger
logger.debug("调试信息")
logger.info("普通信息")
logger.success("成功信息") # loguru 特有
logger.warning("警告")
logger.error("错误")
logger.critical("严重错误")
loguru 的亮点功能:
logger.add("file.log")将日志输出到文件。logger.remove()可移除默认控制台输出,方便自定义。
logger.remove() # 移除默认 handler
logger.add("app.log", rotation="1 MB") # 文件日志,自动轮转
二、random 模块
随机数在测试、模拟、抽奖等场景中非常常用。
random.randint(a, b):返回 [a, b] 范围内的随机整数(闭区间)。
import random print(random.randint(1, 100)) # 1~100 的随机整数
random.random():返回 [0.0, 1.0) 的随机浮点数。
print(random.random()) # 0.0 ~ 1.0(不含 1.0)
random.choice(seq):从非空序列(列表、元组、字符串)中随机取出一个元素。
colors = ['red', 'blue', 'green'] print(random.choice(colors)) # 随机返回一种颜色
random.sample(population, k):从总体中无放回地随机抽取 k 个元素,返回列表。
nums = [1, 2, 3, 4, 5, 6] print(random.sample(nums, 3)) # eg: [5, 2, 4]
三、time 模块
处理时间相关的操作,常用函数如下:
time.time():返回当前时间戳(自 1970-01-01 00:00:00 UTC 起算的浮点秒数)。
import time print(time.time()) # 1680000000.123456
time.localtime():将时间戳转为当前时区的struct_time对象,不传参数则使用当前时间。
t = time.localtime() print(t.tm_year, t.tm_mon, t.tm_mday) # 年 月 日
time.sleep(seconds):让程序休眠指定秒数,常用于控制节奏或模拟等待。
print("开始等待...")
time.sleep(2)
print("两秒后继续")
四、os 模块
os 模块提供了与操作系统交互的各种功能,常用于文件和目录操作。
os.getcwd():获取当前工作目录。
import os print(os.getcwd())
os.listdir(path):返回指定目录下的所有文件和子目录名称列表,.表示当前目录。
files = os.listdir(".")
print(files)
os.mkdir(path):新建一个目录,如果父目录不存在会抛出异常。os.rmdir(path):删除一个空目录,非空会报错。os.rename(old, new):重命名文件或目录。os.chmod(path, mode):更改文件或目录权限。os.system(command):在子 shell 中执行系统命令,返回退出状态码。
os.system("ls -l") # Linux/macOS
os.system("dir") # Windows
os.popen(command):执行命令并打开一个管道,返回可读写的文件对象,用于捕获命令输出。
示例:
f = os.popen("echo Hello")
output = f.read()
print(output) # Hello
五、json 模块
处理 JSON 数据是前后端交互的核心环节,Python 的 json 模块提供了高效的序列化与反序列化支持。
1. 序列化(Python → JSON)
json.dumps(obj):将 Python 对象转为 JSON 格式字符串,返回str。
import json
data = {"name": "Alice", "age": 25}
json_str = json.dumps(data)
print(json_str) # '{"name": "Alice", "age": 25}'
json.dump(obj, file):将 Python 对象直接写入文件对象,无返回值。
with open("data.json", "w") as f:
json.dump(data, f)
2. 反序列化(JSON → Python)
json.loads(s):将 JSON 字符串解析为 Python 对象。
json_str = '{"name": "Bob", "score": 92.5}'
obj = json.loads(json_str)
print(obj["name"]) # Bob
json.load(file):从打开的文件对象中读取 JSON 并转换为 Python 对象。
with open("data.json", "r") as f:
data = json.load(f)
3. 数据类型转换对照表
| Python | JSON |
|---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
注意:元组在序列化时会转为 JSON 数组,反序列化回来变成列表。
小结
本文整理的五大模块是 Python 日常开发中的高频工具:
- 日志:标准
logging与更友好的loguru,帮助追踪程序状态。 - 随机数:
random.randint、random.choice、random.sample满足随机需求。 - 时间:
time.time获取时间戳,time.sleep控制节奏。 - 系统交互:
os模块处理文件目录操作与系统命令执行。 - 数据序列化:
json模块实现 Python 与 JSON 的无缝转换。
建议在实际项目中多加练习,遇到陌生函数时可以查阅官方文档或使用 help() 查看详细说明。掌握这些模块,你的 Python 开发效率会再上一个台阶。
以上就是Python常用内置模块日志、随机数、时间、OS与JSON详解的详细内容,更多关于Python常用内置模块的资料请关注脚本之家其它相关文章!
