Python常见模块及其用法示例详解

作者:

文章目录
  • 模块是一个包含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
  • 本文主要讲解模块有:time random os sys json time 时间处理 random 生成随机数和实现随机选择功能 os 操作系统交互 sys 系统相关功能 json JSON 数据处理
  • 到此这篇关于Python常见模块及其用法示例详解的文章就介绍到这了,更多相关Python常见模块用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python的subprocess模块总结 Python os模块介绍 Python内置模块turtle绘图详解 Python subprocess模块详细解读 Python之re模块详解 Python模块汇总(常用第三方库) python中requests模块的使用方法
  • 目录
    • 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 高级序列化控制
    • 总结 

      • 模块是一个包含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
      

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

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

      时间处理

      方法 功能 示例
      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 -> 时间戳 时间类型转化

      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
      

      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)
      

      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秒
      

      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
      

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

      方法 功能 示例
      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() 保存/恢复状态 重现随机序列

      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(随机浮点数)
        

      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 中的随机数)
        

      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'](顺序随机)
        

      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秒发生一次的事件间隔)
        

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

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

      操作系统交互

      方法 功能 备注
      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() 执行系统命令

      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'>
      

      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
      

      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")
      

      系统相关功能

      方法 功能 备注
      sys.argv 获取命令行参数
      sys.stdout 重定向输出
      sys.stdin.readline().strip() 读取标准输入
      sys.version 获取Python版本信息
      sys.path 获取模块搜索路径
      sys.exit(1) 退出程序并返回状态码 非0状态码表示异常退出
      sys.stdout.flush() 刷新输出缓冲区 确保立即显示

      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("")
      

      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
      """
      

      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
      """
      

      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("完成!")
      

      JSON 数据处理

      方法 功能
      json.dumps() Python -> JSON字符串
      json.loads() JSON字符串 -> Python
      json.dump 写入JSON文件
      json.load() 读取JSON文件

      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"
      

      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)
      

      # 处理自定义对象
      class User:
          def __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常见模块用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • Python的subprocess模块总结
      • Python os模块介绍
      • Python内置模块turtle绘图详解
      • Python subprocess模块详细解读
      • Python之re模块详解
      • Python模块汇总(常用第三方库)
      • python中requests模块的使用方法

      站内搜索