当前位置:首页>python>【跟着AI学Python】Python常用内置模块:time 模块和 pathlib 模块

【跟着AI学Python】Python常用内置模块:time 模块和 pathlib 模块

  • 2026-09-10 15:31:00
【跟着AI学Python】Python常用内置模块:time 模块和 pathlib 模块
【Qwen-MAX】

Python 的标准库之所以强大,是因为它“开箱即用”。今天我们要讲的 time 和 pathlib 模块,一个是处理时间的利器,一个是操作文件路径的现代化工具。

  • time 模块:专注于时间戳、程序休眠和性能测试,是底层时间处理的基石。
  • pathlib 模块:Python 3.4+ 引入的面向对象路径处理库,它比传统的 os.path更直观、更优雅,是处理文件系统的推荐方式。

⏱️ time 模块:掌控时间的流逝

time 模块主要用于获取当前时间、让程序暂停以及计算代码运行时间。它不需要安装,直接导入即可使用。

1. 获取时间:时间戳与结构化时间

在计算机中,时间通常有两种表现形式:

  • 时间戳 (Timestamp):一个浮点数,代表从 1970年1月1日 00:00:00 到现在的秒数。它是计算机内部计算时间差的标准。
  • 结构化时间 (struct_time):一个包含年、月、日、时、分、秒等 9 个元素的元组,更适合人类阅读。

常用函数对比:

函数
功能
返回值类型
time.time()
获取当前时间戳
浮点数 (float)
time.localtime()
将时间戳转换为本地结构化时间
struct_time
 对象
time.gmtime()
将时间戳转换为 UTC (格林威治) 结构化时间
struct_time
 对象
import time# 1. 获取时间戳timestamp = time.time()print(f"当前时间戳: {timestamp}")# 2. 获取本地结构化时间local_time = time.localtime()print(f"本地时间元组: {local_time}")# 输出示例: time.struct_time(tm_year=2026, tm_mon=4, tm_mday=9, ...)# 3. 获取 UTC 时间utc_time = time.gmtime()print(f"UTC时间元组: {utc_time}")

2. 格式化时间:让时间更可读

机器喜欢时间戳,但人类喜欢 "2026-04-09 20:35:22" 这种格式。我们需要使用 time.strftime() 来进行格式化。

  • time.strftime(format, t):将结构化时间转换为指定格式的字符串。
  • 常用格式代码:
  • %Y: 四位年份 (2026)
  • %m: 月份 (01-12)
  • %d: 日期 (01-31)
  • %H: 小时 (00-23)
  • %M: 分钟 (00-59)
  • %S: 秒 (00-59)
import timenow = time.localtime()# 格式化为:年-月-日 时:分:秒formatted_time = time.strftime("%Y-%m-%d%H:%M:%S", now)print(f"格式化后的时间: {formatted_time}")# 输出: 2026-04-09 20:35:22

3. 程序暂停与性能测试

  • time.sleep(seconds):暂停程序执行指定的秒数。常用于定时任务或模拟等待。
  • 计算代码耗时:通过记录开始和结束的时间戳差值,可以测量代码性能。
import time# 1. 暂停程序print("开始...")time.sleep(2)  # 暂停2秒print("2秒后继续...")# 2. 计算代码执行时间start = time.time()# 模拟一段耗时操作time.sleep(1)end = time.time()print(f"代码执行耗时: {end - start:.2f} 秒")

📂 pathlib 模块:现代化的路径操作

在 Python 3 之前,我们习惯用 os.path 拼接路径,代码往往充斥着大量的字符串拼接。pathlib 引入了面向对象的思想,把文件路径当作一个对象来处理,操作更加直观且跨平台(自动处理 Windows 的 \ 和 Linux 的 /)。

1. 创建路径对象

使用 Path 类将字符串路径转换为对象。

from pathlib import Path# 创建路径对象p = Path('/Users/data/project/main.py')# 或者使用当前目录current = Path('.') 

2. 路径拼接与分解

pathlib 最大的亮点是使用 / 运算符来拼接路径,这比 os.path.join() 清爽得多。

操作
代码示例
说明
拼接路径p / 'subfolder' / 'file.txt'
自动适配系统分隔符
获取文件名p.name
包含后缀,如 main.py
获取后缀p.suffix
如 .py
获取文件名(无前缀)p.stem
不含后缀,如 main
获取父目录p.parent
返回上一级目录的 Path 对象
from pathlib import Pathbase = Path('/home/user')# 优雅的路径拼接file_path = base / 'documents' / 'report.pdf'print(file_path) # 输出: /home/user/documents/report.pdfprint(f"文件名: {file_path.name}")    # report.pdfprint(f"后缀: {file_path.suffix}")    # .pdfprint(f"父目录: {file_path.parent}")  # /home/user/documents

3. 文件与目录的常用操作

Path 对象不仅代表路径,还包含了对文件系统的操作方法。

判断存在性:
  • p.exists(): 路径是否存在
  • p.is_file(): 是否是文件
  • p.is_dir(): 是否是目录
创建与删除:
  • p.mkdir(parents=True, exist_ok=True): 创建目录(
    parents=True 可创建多级目录)
  • p.rmdir(): 删除空目录
遍历目录:
  • p.iterdir(): 遍历当前目录下的所有文件和子目录
  • p.glob('*.py'): 查找特定类型的文件(如所有 .py 文件)
from pathlib import Path# 假设当前目录下有一个 data 文件夹data_dir = Path('data')# 1. 检查并创建目录if not data_dir.exists():    data_dir.mkdir(parents=True)    print("目录已创建")# 2. 遍历目录下的所有 .txt 文件for txt_file in data_dir.glob('*.txt'):    print(f"找到文本文件: {txt_file}")# 3. 获取绝对路径print(f"绝对路径: {data_dir.resolve()}")

📌 总结

  • time 模块:是处理时间的“瑞士军刀”,无论是记录日志时间戳,还是做性能分析(计算耗时),它都是基础且必不可少的。
  • pathlib 模块:是文件路径操作的“现代化方案”。如果你还在写 os.path.join,建议尽快切换到 pathlib,它能让你的文件操作代码更加简洁、易读且不易出错。

最新文章

随机文章