当前位置: 首页 > news >正文

【Python】常见模块及其用法

文章目录

    • 1. 什么是模块和包?
    • 2. 常见的模块及其用法
      • 2.1 time
        • 概览
        • 2.1.1 时间获取方法
        • 2.1.2 时间格式化与解析
        • 2.1.3 程序计时与延迟
        • 2.1.4 时间转换
      • 2.2 random
        • 概览
        • 2.2.1 基本随机数
        • 2.2.2 随机整数
        • 2.2.3 序列操作
        • 2.2.4 概率分布
        • 2.2.5 随机种子
        • 2.2.6 状态管理
      • 2.3 os
        • 概览
        • 2.3.1 文件与目录操作
        • 2.3.2 路径处理
        • 2.3.3 系统信息与环境
      • 2.4 sys
        • 概览
        • 2.4.1 命令行参数处理
        • 2.4.2 标准输入/输出控制
        • 2.4.3 系统信息与配置
        • 2.4.4 程序流程控制
      • 2.5 json
        • 概览
        • 2.5.1 基本序列化与反序列化
        • 2.5.2 文件读写操作
        • 2.5.3 高级序列化控制

1. 什么是模块和包?


  • 模块是一个包含python代码的文件(后缀名.py),内容可以包括函数、类、变量等
# 文件名为hello.py
def func():print("hello world!")
func()

使用模块

import hello

  • 包是包含多个模块的目录,它通过__init__.py文件(可以是空文件)来标识这是一个Python包。
mypackage/
│── __init__.py
│── module1.py
│── module2.py
└── subpackage/│── __init__.py│── module3.py

使用包

from mypackage import module1,module2
from mypackage.subpackage import module3

2. 常见的模块及其用法

本文主要讲解模块有:time random os sys json

  1. time 时间处理
  2. random 生成随机数和实现随机选择功能
  3. os 操作系统交互
  4. sys 系统相关功能
  5. json JSON 数据处理

2.1 time

时间处理


概览
方法功能示例
time()时间戳,1970年1月1日00:00:00 UTC至今的秒数1753161307.4428105
ctime()获取可读的时间字符串“Tue Jul 22 13:15:07 2025"
localtime()获取结构化时间对象(包含年、月、日等字段)time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=15, tm_sec=7, tm_wday=1, tm_yday=203, tm_isdst=0)
strftime("%Y-%m-%d %H:%M:%S",struct_time)时间格式化(字符串)“2025-07-22 13:33:09”
strptime(“2025-07-22”)时间解析“time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)”
perf_counter())精确计时(性能测试)耗时时间
sleep(2.5)程序暂停停顿2.5秒
localtime()时间戳 -> struct_time时间类型转化
mktime()struct_time -> 时间戳时间类型转化
2.1.1 时间获取方法
  1. time.time()
  • 功能:获取当前的时间戳(1970年1月1日00:00:00 UTC至今的秒数)
  • 示例
    import time
    print(time.time())  # 输出:1753161307.4428105(当前时间)
    
  1. time.ctime()
  • 功能:获取可读的时间字符串
  • 示例
print(time.ctime()) 
# 输出:“Tue Jul 22 13:15:07 2025”
  1. time.localtime()
  • 功能:获取结构化时间对象(包含年、月、日等字段)
  • 示例
struct_time = time.localtime()
print(struct_time.tm_year, struct_time.tm_mon,struct_time.tm_mday) 
# 输出:2025 7 22
2.1.2 时间格式化与解析
  1. time.strftime()
  • 功能:时间格式化
  • 示例
struct_time = time.localtime()
formatted = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
# 输出 2025-07-22 13:33:09
  1. time.strptime()
  • 功能:时间解析(字符串 -> struct_time)
  • 示例
parsed_time = time.strptime("2025-07-22", "%Y-%m-%d") 
print(parsed_time)
# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)
2.1.3 程序计时与延迟
  1. time.pref_counter()
  • 功能:精确计时(性能测试)
  • 示例
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"执行耗时:{end - start:.4f}秒")
# 输出:
# 执行耗时:2.0003秒
  1. time.sleep()
  • 功能:程序暂停
  • 示例
start = int(time.time())
time.sleep(2)
end = int(time.time())
print(f"停顿{end - start:.2f}秒")# 输出:
# 停顿2.00秒
2.1.4 时间转换
  1. 时间戳 -> struct_time
  • 方法:time.localtime()
  • 示例
timestamp = time.time()
ts_to_struct = time.localtime(timestamp)
print(ts_to_struct)# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=50, tm_sec=49, tm_wday=1, tm_yday=203, tm_isdst=0)
  1. struct_time -> 时间戳
  • 方法:time.mktime()
  • 示例
struct_time = time.localtime()
struct_to_ts = time.mktime(struct_time)
print(struct_to_ts)# 输出:
# 1753163493.0

2.2 random

生成随机数和实现随机选择功能

概览
方法功能示例
random()[0.0, 1.0) 的随机浮点数0.374501
uniform(a, b)[a, b] 的随机浮点数7.823
randint(a, b)[a, b] 的随机整数4
randrange(start, stop, step)指定范围的随机整数45
choice(seq)序列中的随机元素“green”
choices(population, k)有放回抽样[‘B’, ‘C’]
sample(population, k)无放回抽样[3, 1, 5]
shuffle(seq)原地打乱序列[‘K’, ‘A’, ‘J’, ‘Q’]
gauss(mu, sigma)高斯分布随机数0.735
seed(a)初始化随机种子固定随机序列
getstate() / setstate()保存/恢复状态重现随机序列
2.2.1 基本随机数
  1. random.random()
  • 功能:生成 [0.0, 1.0) 之间的随机浮点数。
  • 示例
    import random
    print(random.random())  # 输出:0.374501(随机值)
    

控制小数位数

  1. 内置函数/四舍五入
    round(random.random(), 3) # 默认 3 位小数
  2. 格式化
    formatted = f{random.random():.3f} # 默认 3 位小数
  1. random.uniform(a, b)
  • 功能:生成 [a, b] 之间的随机浮点数。
  • 示例
    print(random.uniform(2, 10))  # 输出:7.342(随机浮点数)
    

2.2.2 随机整数
  1. random.randint(a, b)
  • 功能:生成 [a, b] 之间的随机整数(包含两端)。
  • 示例
    print(random.randint(1, 10))  # 输出:3
    
  1. random.randrange(start, stop, step)
  • 功能:从 range(start, stop, step) 中随机选择一个整数 [start, stop) 左开右闭
  • 示例
    print(random.randrange(0, 100, 5))  # 输出:45(0,5,10,...,95 中的随机数)
    

2.2.3 序列操作
  1. random.choice(seq)
  • 功能:从非空序列中随机选择一个元素。
  • 示例
    colors = ['red', 'green', 'blue']
    print(random.choice(colors))  # 输出:'green'(随机颜色)
    
  1. random.choices(population, weights=None, k=1)
  • 功能:从序列中有放回地随机抽取 k 个元素(可设置权重)。
  • 示例
    result = random.choices(['A', 'B', 'C'], weights=[0.2, 0.5, 0.3], k=2)
    print(result)  # 输出:['B', 'C'](权重越高越可能被选中)
    
  1. random.sample(population, k)
  • 功能:从序列中无放回地随机抽取 k 个唯一元素。
  • 示例
    numbers = [1, 2, 3, 4, 5]
    print(random.sample(numbers, 3))  # 输出:[3, 1, 5](随机不重复的3个数)
    
  1. random.shuffle(seq)
  • 功能:将序列原地随机打乱(修改原序列)。
  • 示例
    cards = ['A', 'K', 'Q', 'J']
    random.shuffle(cards)
    print(cards)  # 输出:['K', 'A', 'J', 'Q'](顺序随机)
    

2.2.4 概率分布
  1. random.gauss(mu, sigma)
  • 功能:生成高斯分布(正态分布)的随机数,mu 为均值,sigma 为标准差。
  • 示例
    print(random.gauss(0, 1))  # 输出:0.735(标准正态分布中的随机值)
    
  1. random.expovariate(lambd)
  • 功能:生成指数分布的随机数,lambd 是事件发生率的倒数。
  • 用途: 多用于建模随机事件之间的时间间隔,尤其适合那些平均间隔已知但具体时间不确定的场景。
  • 示例
    print(random.expovariate(1.0/5))  # 输出:3.2(模拟平均每5秒发生一次的事件间隔)
    

2.2.5 随机种子
  1. random.seed(a=None)
  • 功能:初始化随机数生成器,相同种子生成相同随机序列(用于可重复性)。
  • 示例
    random.seed(42)  # 固定种子
    print(random.random())  # 输出:0.6394(每次运行结果相同)
    

2.2.6 状态管理
  1. random.getstate()random.setstate(state)
  • 功能:保存/恢复随机数生成器的内部状态。
  • 原理: 这是伪随机数生成器的典型行为,用于保证生成的随机数序列具有不可预测性和多样性
  • 示例
    state = random.getstate()  # 保存当前状态
    print(random.random())     # 随机数1
    random.setstate(state)     # 恢复状态
    print(random.random())     # 再次输出相同的随机数1
    

2.3 os

操作系统交互

概览
方法功能备注
mkdir()创建单级目录存在时创建的目录会报错
makedirs()创建多级目录exist_ok = True 已存在创建的目录不会报错
rename()重命名
remove()删除文件
scandir()目录遍历
walk()递归遍历目录
os.path.join()路径拼接
os.path.dirname() 、os.path.basename()、os.path.splitext()路径分解
os.path.exists、os.path.isfile()、os.path.isdir()路径检查
os.getcwd()获取当前路径
os.chdir()修改工作目录
os.environ.get()获取环境变量
os.system()执行系统命令
2.3.1 文件与目录操作
  1. 创建目录
  • 方法os.mkdir() / os.makedirs()
  • 示例
import os
os.mkdir("1") # 创建单级目录 | 文件已存在会报错
os.makedirs("test/1", exist_ok=True) # 创建多级目录,exist_ok=True,当文件已存在时不报错
  1. 文件操作
  • 方法os.rename() / os.remove()
  • 示例
import os
os.rename("old.txt","new.txt") # 重命名
os.remove("test/1.txt") # 删除文件
  1. 目录遍历
  • 方法os.scandir()
  • 示例
import os
for entry in os.scandir("."): # . 遍历当前目录下的所有 文件 和 子目录 if entry.is_file():print("文件:",entry)
# 输出:
# 文件: <DirEntry '1.py'>
2.3.2 路径处理
  1. 路径分解
  • 方法os.path.dirname() | os.path.basename() | os.path.splitext()
  • 示例
import ospath = "/home/user/documents/report.txt"# 获取路径组成部分
dir_path = os.path.dirname(path)  # 目录路径: "/home/user/documents"
file_name = os.path.basename(path)  # 完整文件名: "report.txt"
file_root, file_ext = os.path.splitext(file_name)  # 分离主名和扩展名: ("report", ".txt")# 完整路径拆分
head, tail = os.path.split(path)  # ("/home/user/documents", "report.txt")
  1. 路径拼接
  • 方法os.path.join()
  • 示例
full_path = os.path.join("dir","subdir","file.txt")
  1. 路径检查
  • 方法os.path.exists() | os.path.isfile() | os.path.isdir()
  • 示例
print(os.path.exists("1.txt"))  # 是否存在
print(os.path.isfile("1.txt"))  # 是否是文件
print(os.path.isdir("1.txt"))  # 是否是目录# 输出答案(根据个人本地要查询的文件为主)
# True
# True
# False
2.3.3 系统信息与环境
  1. os.getcwd()
  • 功能:获取当前工作目录
  • 示例
 cwd = os.getcwd()
  1. os.chdir()
  • 功能:修改工作目录
  • 示例
 cwd = os.chdir("/new/path")
  1. os.environ.get()
  • 功能:获取环境变量
  • 示例
home_dir = os.enciron.get("HOME","default") # 查找 HOME 值,没有则返回默认值 default
print(home_dir)
  1. os.system()
  • 功能:执行系统命令
  • 示例
os.system("ls -l")

2.4 sys

系统相关功能

概览
方法功能备注
sys.argv获取命令行参数
sys.stdout重定向输出
sys.stdin.readline().strip()读取标准输入
sys.version获取Python版本信息
sys.path获取模块搜索路径
sys.exit(1)退出程序并返回状态码非0状态码表示异常退出
sys.stdout.flush()刷新输出缓冲区确保立即显示
2.4.1 命令行参数处理
  1. sys.argv
  • 功能:获取命令行参数
  • 示例
# 假设执行:python scripts.py arg1 arg2 --option=value
print(sys.argv) # ['script.py', 'arg1', 'arg2', '--option=value']
# 实际应用:处理命令行选项
if len()sys.argv) > 1:action = sys.argv[1] # arg1if action == "start":print("")elif action == "stop":print("")
2.4.2 标准输入/输出控制
  1. sys.stdout
  • 功能:重定向输出
  • 示例
with open('1.txt','w',encoding="utf-8-sig") as f:sys.stdout = f # 重定向标准输出到文件print("这条信息将写入文件")sys.stdout = sys._stdout__ # 恢复标准输出
# 会将print中的内容写进 1.txt文件内
  1. sys.stdin.readline().strip()
  • 功能:读取标准输入
  • 示例
print("请输入内容:")
user_input = sys.stdin.readline().strip()
print(f"您输入了:{user_input}")# 输出:
"""
请输入内容:
1 2 3 
您输入了:1 2 3
"""
2.4.3 系统信息与配置
  1. sys.version
  • 功能:获取Python版本信息
  • 示例
print(sys.version)
# 输出
"""
3.11.9 (tags/v3.11.9:de54cf5, Apr  2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)]
"""
  1. sys.path
  • 功能:获取模块搜索路径
  • 示例
print(sys.path) # 输出列表形式,包含Python查找模块的路径
  1. sys.platform
  • 功能:获取操作系统平台
  • 示例
print(sys.platform) # 'win32', 'linux', 'darwin' (macOS)
# 输出 
"""
win32
"""
2.4.4 程序流程控制
  1. sys.exit(n)
  • 功能:退出程序并返回状态码(n=0时,正常退出;n=1《或是其它数字》时表示异常退出)
  • 场景:通常用于脚本或程序中发生错误时提前退出,表示异常终止
  • 示例
if error_occurred:sys.exit(1) # 非0状态码表示异常退出
  1. sys.stdout.flush()
print("处理中...", end="")
sys.stdout.flush()
# 执行耗时操作...
print("完成!")

2.5 json

JSON 数据处理

概览
方法功能
json.dumps()Python -> JSON字符串
json.loads()JSON字符串 -> Python
json.dump写入JSON文件
json.load()读取JSON文件
2.5.1 基本序列化与反序列化
  1. Python -> JSON字符串
  • 方法json.dumps()
  • 示例
import json
data = {"name": "Alice","age": 30,"hobbies": ["reading"],"is_student": False,
}
json_str = json.dumps(data, indent=2)
print(json_str)# 输出:
"""
{"name": "Alice","age": 30,"hobbies": ["reading","hiking"],"is_student": false
}
"""
  1. JSON字符串 -> Python
  • 方法json.loads()
  • 示例
restored_data = json.loads(json_str)
print(restored_data["name"]) # "Alice"
2.5.2 文件读写操作
  1. json.dump()
  • 功能:写入JSON文件
  • 示例
with open("data.json", "w") as f:json.dump(data, f, indent=4) # 控制为 4 缩进空格
  1. json.load()
  • 功能:读取JSON文件
  • 示例
with open("data.json") as f:loaded_data = json.load(f)
2.5.3 高级序列化控制

# 处理自定义对象
class User:def __init__(self, name, age):self.name = nameself.age = age# 自定义序列化方法
def user_encoder(obj):if isinstance(obj, User): # 判断 obj 是否是 User 的实例return {"name": obj.name, "age": obj.age}raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable")user = User("Bob", 40)
user_json = json.dumps(user, default=user_encoder)  # {"name": "Bob", "age": 40}# 自定义反序列化方法
def user_decoder(dct):if "name" in dct and "age" in dct:return User(dct["name"], dct["age"])return dctrestored_user = json.loads(user_json, object_hook=user_decoder)
print(restored_user.name)  # "Bob"
```
http://www.lryc.cn/news/596445.html

相关文章:

  • 解决栅格数据裁剪矢量数据问题两种方法,ArcGIS解决与PYTHON解决
  • Leetcode力扣解题记录--第41题(原地哈希)
  • 力扣-300.最长递增子序列
  • LeetCode 633.平方数之和
  • Uni-App:跨平台开发的终极解决方案
  • uniapp app打包流程
  • 《Uniapp-Vue 3-TS 实战开发》自定义预约时间段组件
  • Java (Spring AI) 实现MCP server实现数据库的智能问答
  • MS523NA非接触式读卡器 IC
  • 【金融机器学习】第四章:风险-收益权衡——Bryan Kelly, 修大成(中文翻译)
  • 【方案】网页由微应用拼图,微前端
  • Node.js:RESPful API、多进程
  • 【STM32】CRC 校验函数
  • linux初识网络及UDP简单程序
  • 二、计算机网络技术——第3章:数据链路层
  • 基于卷积神经网络与小波变换的医学图像超分辨率算法复现
  • DeepSPV:一种从2D超声图像中估算3D脾脏体积的深度学习流程|文献速递-医学影像算法文献分享
  • zmaiFy来说软字幕和硬字幕有什么优缺点?
  • qtbase5-dev库使用介绍
  • 生成式人工智能对网络安全的影响
  • OpenCV快速入门之CV宝典
  • 博物馆智慧导览系统AR交互与自动感应技术:从虚实融合到智能讲解的技术实践
  • 内核协议栈源码阅读(一) ---驱动与内核交互
  • Spring AI Alibaba + JManus:从架构原理到生产落地的全栈实践——一篇面向 Java 架构师的 20 分钟深度阅读
  • 打造智能化应用新思路:扣子Coze工作流详解与最佳实践
  • MCU中的总线桥是什么?
  • js的基本内容:引用、变量、打印、交互、定时器、demo操作
  • 聚簇索引的优势
  • LeetCode|Day22|231. 2 的幂|Python刷题笔记
  • windows下nvm的安装及使用