开发者

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_ti编程客栈me)
    # 输出:
    # 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 os
    
    path = "/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")
    javascript

    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] # arg1
    	if 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("python完成!")
    

    2.5 json

    JSON 数据处理

    概览

    方法功能
    json.dumps()Python -> JSON字符串
    json.loads()JSON字符串 -> Python
    jsonandroid.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:
        www.devze.comdef __init__(self, name, age):
            self.name = name
            self.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 dct
    
    restored_user = json.loads(user_json, object_hook=user_decoder)
    print(restored_user.name)  # "Bob"
    ```
    

    总结 

    到此这篇关于Python常见模块及其用法示例详解的文章就介绍到这了,更多相关Python常见模块用法内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜