Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON

Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON

在 Python 开发中,内置标准库提供了大量开箱即用的实用模块,能极大提升开发效率。本文集中梳理五大常用模块------logging / loguru(日志)random(随机数)time(时间) 、**os(系统交互)**和 json(数据序列化),覆盖日常使用频率最高的函数与用法。


一、日志模块

日志是排查问题的关键手段,Python 自带的 logging 是标准解决方案,而第三方库 loguru 则进一步简化了日志操作。

1. logging(标准库)

logging 内置五种日志级别,从低到高依次为:

级别 数值 含义
DEBUG 10 详细调试信息
INFO 20 正常运行信息
WARNING 30 警告,但程序仍可运行
ERROR 40 错误,部分功能受影响
CRITICAL 50 严重错误,程序可能崩溃

基础用法:

python 复制代码
import logging

logging.debug("这是调试信息")
logging.info("程序启动")
logging.warning("磁盘空间不足")
logging.error("数据处理失败")
logging.critical("服务宕机")

默认输出到控制台,且只有 WARNING 及以上级别会被打印。可以通过 basicConfig 调整输出格式、等级和文件路径。

2. loguru(更友好的日志库)

loguru 是第三方库,以更简洁的 API 和更美观的输出著称。

安装:

bash 复制代码
pip install loguru

导入与使用:

python 复制代码
from loguru import logger

logger.debug("调试信息")
logger.info("普通信息")
logger.success("成功信息")   # loguru 特有
logger.warning("警告")
logger.error("错误")
logger.critical("严重错误")

loguru 的亮点功能:

  • logger.add("file.log") 将日志输出到文件。
  • logger.remove() 可移除默认控制台输出,方便自定义。
python 复制代码
logger.remove()                # 移除默认 handler
logger.add("app.log", rotation="1 MB")  # 文件日志,自动轮转

二、random 模块

随机数在测试、模拟、抽奖等场景中非常常用。

  • random.randint(a, b):返回 [a, b] 范围内的随机整数(闭区间)。
python 复制代码
import random
print(random.randint(1, 100))   # 1~100 的随机整数
  • random.random():返回 [0.0, 1.0) 的随机浮点数。
python 复制代码
print(random.random())          # 0.0 ~ 1.0(不含 1.0)
  • random.choice(seq):从非空序列(列表、元组、字符串)中随机取出一个元素。
python 复制代码
colors = ['red', 'blue', 'green']
print(random.choice(colors))    # 随机返回一种颜色
  • random.sample(population, k):从总体中无放回地随机抽取 k 个元素,返回列表。
python 复制代码
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 起算的浮点秒数)。
python 复制代码
import time
print(time.time())   # 1680000000.123456
  • time.localtime():将时间戳转为当前时区的 struct_time 对象,不传参数则使用当前时间。
python 复制代码
t = time.localtime()
print(t.tm_year, t.tm_mon, t.tm_mday)  # 年 月 日
  • time.sleep(seconds):让程序休眠指定秒数,常用于控制节奏或模拟等待。
python 复制代码
print("开始等待...")
time.sleep(2)
print("两秒后继续")

四、os 模块

os 模块提供了与操作系统交互的各种功能,常用于文件和目录操作。

  • os.getcwd():获取当前工作目录。
python 复制代码
import os
print(os.getcwd())
  • os.listdir(path):返回指定目录下的所有文件和子目录名称列表,. 表示当前目录。
python 复制代码
files = os.listdir(".")
print(files)
  • os.mkdir(path):新建一个目录,如果父目录不存在会抛出异常。

  • os.rmdir(path):删除一个空目录,非空会报错。

  • os.rename(old, new):重命名文件或目录。

  • os.chmod(path, mode):更改文件或目录权限。

  • os.system(command):在子 shell 中执行系统命令,返回退出状态码。

python 复制代码
os.system("ls -l")   # Linux/macOS
os.system("dir")     # Windows
  • os.popen(command):执行命令并打开一个管道,返回可读写的文件对象,用于捕获命令输出。

示例:

python 复制代码
f = os.popen("echo Hello")
output = f.read()
print(output)   # Hello

五、json 模块

处理 JSON 数据是前后端交互的核心环节,Python 的 json 模块提供了高效的序列化与反序列化支持。

1. 序列化(Python → JSON)

  • json.dumps(obj):将 Python 对象转为 JSON 格式字符串,返回 str
python 复制代码
import json
data = {"name": "Alice", "age": 25}
json_str = json.dumps(data)
print(json_str)   # '{"name": "Alice", "age": 25}'
  • json.dump(obj, file):将 Python 对象直接写入文件对象,无返回值。
python 复制代码
with open("data.json", "w") as f:
    json.dump(data, f)

2. 反序列化(JSON → Python)

  • json.loads(s):将 JSON 字符串解析为 Python 对象。
python 复制代码
json_str = '{"name": "Bob", "score": 92.5}'
obj = json.loads(json_str)
print(obj["name"])   # Bob
  • json.load(file):从打开的文件对象中读取 JSON 并转换为 Python 对象。
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.randintrandom.choicerandom.sample 满足随机需求。
  • 时间time.time 获取时间戳,time.sleep 控制节奏。
  • 系统交互os 模块处理文件目录操作与系统命令执行。
  • 数据序列化json 模块实现 Python 与 JSON 的无缝转换。

建议在实际项目中多加练习,遇到陌生函数时可以查阅官方文档或使用 help() 查看详细说明。掌握这些模块,你的 Python 开发效率会再上一个台阶。

相关推荐
右耳朵猫AI1 小时前
Python技术周刊 2026年第14周
开发语言·python·okhttp
2501_901200531 小时前
MongoDB事务会产生多少性能损耗
jvm·数据库·python
zh1570231 小时前
CSS如何通过Sass循环生成辅助类_批量创建颜色或间距样式
jvm·数据库·python
加号31 小时前
【Python】 实现 HTTP 网络请求功能入门指南
网络·python·http
叼烟扛炮1 小时前
C++ 知识点22 函数模板
开发语言·c++·算法·函数模版
神明9311 小时前
golang如何实现滚动更新方案_golang滚动更新方案实现实战
jvm·数据库·python
CLX05051 小时前
mysql复杂查询语句如何调优_通过改写子查询为JOIN连接
jvm·数据库·python
m0_609160491 小时前
Redis怎样在Spring中执行批量Pipeline指令
jvm·数据库·python
2301_783848651 小时前
如何实现SQL动态字段选择查询_利用反射或动态拼接字符串
jvm·数据库·python