Python中-os库的用法超详细介绍

 更新时间:2025年06月17日 10:42:03   投稿:daisy  
OS库是Python标准库,包含几百个函数,提供通用的、基本的操作系统交互功能,这篇文章主要介绍了Python中-os库用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、os 库概述

  • 功能:提供与操作系统交互的接口,包括文件管理、环境变量、进程控制、路径操作等。
  • 跨平台特性:大部分函数支持 Windows、Linux、macOS,但部分功能存在系统差异。
  • 核心模块
    • os:基础操作系统接口
    • os.path:路径处理工具
  • 导入方式
import os

二、常用功能分类详解

​1. 路径操作(os.path 模块)​

函数描述示例输出示例
os.path.abspath(path)返回绝对路径os.path.abspath("test.txt")/home/user/test.txt
os.path.dirname(path)返回路径的目录部分os.path.dirname("/a/b/c.txt")/a/b
os.path.basename(path)返回路径的文件名部分os.path.basename("/a/b/c.txt")c.txt
os.path.join(path1, path2)智能拼接路径(跨平台安全)os.path.join("dir", "file.txt")dir/file.txt
os.path.exists(path)检查路径是否存在os.path.exists("test.txt")True/False
os.path.isfile(path)检查是否为文件os.path.isfile("test.txt")True
os.path.isdir(path)检查是否为目录os.path.isdir("docs")True
os.path.getsize(path)获取文件大小(字节)os.path.getsize("test.txt")1024
os.path.splitext(path)分割文件名和扩展名os.path.splitext("file.txt")('file', '.txt')

2. 目录管理

函数描述示例注意
os.getcwd()获取当前工作目录print(os.getcwd())返回绝对路径
os.chdir(path)切换当前工作目录os.chdir("..")失败抛出 FileNotFoundError
os.listdir(path=".")列出目录内容os.listdir("/tmp")返回文件名列表(不递归)
os.mkdir(path)创建单层目录os.mkdir("new_dir")目录已存在时抛出 FileExistsError
os.makedirs(path)递归创建多层目录os.makedirs("a/b/c")类似 mkdir -p
os.rmdir(path)删除空目录os.rmdir("empty_dir")目录非空时抛出 OSError
os.removedirs(path)递归删除空目录os.removedirs("a/b/c")从最深层开始向上删除

3. 文件操作

函数描述示例注意
os.remove(path)删除文件os.remove("temp.txt")文件不存在时抛出 FileNotFoundError
os.rename(src, dst)重命名/移动文件或目录os.rename("old.txt", "new.txt")跨磁盘移动可能失败
os.stat(path)获取文件状态信息st = os.stat("file.txt")st.st_size返回包含大小、时间等的对象
os.utime(path, times)修改文件访问/修改时间os.utime("file.txt", (atime, mtime))时间戳为秒数

4. 进程管理

函数描述示例注意
os.system(command)执行系统命令os.system("ls -l")返回命令退出状态码
os.popen(command)执行命令并获取输出(已废弃)output = os.popen("date").read()建议改用 subprocess
os.exec*() 系列替换当前进程(如 os.execlpos.execlp("python", "python", "script.py")执行后原进程终止
os.kill(pid, signal)向进程发送信号os.kill(pid, signal.SIGTERM)Windows 支持有限

5. 环境变量管理

函数/属性描述示例注意
os.environ字典形式的环境变量os.environ["PATH"]修改后仅影响当前进程
os.getenv(key, default)获取环境变量值os.getenv("HOME", "/tmp")键不存在时返回 default
os.putenv(key, value)设置环境变量(不推荐)os.putenv("DEBUG", "1")建议直接操作 os.environ

6. 系统信息

函数/属性描述示例输出示例
os.name操作系统名称print(os.name)posix(Linux/macOS)
nt(Windows)
os.sep路径分隔符os.sep/ 或 \
os.linesep行终止符os.linesep\n(Linux)
\r\n(Windows)
os.cpu_count()返回 CPU 核心数os.cpu_count()8

三、实际应用示例

​1. 递归遍历目录

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * level
        print(f"{indent}{os.path.basename(root)}/")
        subindent = ' ' * 4 * (level + 1)
        for f in files:
            print(f"{subindent}{f}")

list_files("/tmp")

 os.walk(path) 是 Python 中用于递归遍历目录结构的核心函数,可深度遍历指定路径下的所有子目录和文件。以下从功能、参数、返回值到应用场景的全面解析:

①、核心功能与运行机制

  • 目录树遍历以 path 为根目录,逐层遍历所有子目录,生成目录树的完整结构。支持 ​深度优先 或 ​广度优先 遍历(通过 topdown 参数控制)。

  • 数据生成方式返回一个 ​生成器​(generator),按需生成三元组 (root, dirs, files),避免一次性加载所有路径导致内存压力。

②、参数详解

python

os.walk(top, topdown=True, onerror=None, followlinks=False)
参数类型作用
topstr要遍历的根目录路径
topdownbool默认 True:先返回父目录再子目录;False 则逆序(从叶子节点向上)
onerrorcallable遍历出错时的回调函数(接收异常对象作为参数)
followlinksbool是否追踪符号链接指向的真实目录(默认 False

③、返回值解析

每次迭代返回的三元组包含:

  • ​**root**
    当前遍历的目录绝对路径(如 "/data/images/cats")。
  • ​**dirs**
    当前目录下的 ​直接子目录名列表​(不含路径,如 ["2023", "2024"])。
  • ​**files**
    当前目录下的 ​文件名列表​(不含路径,如 ["cat1.jpg", "cat2.png"])。

示例目录结构

markdown

root/
├── dir1/
│   ├── file1.txt
│   └── subdir/
└── dir2/
    └── file2.log

对应的遍历输出:

python

# 第一次迭代
('root', ['dir1', 'dir2'], [])  
# 第二次迭代(进入 dir1)
('root/dir1', ['subdir'], ['file1.txt'])  
# 第三次迭代(进入 subdir)
('root/dir1/subdir', [], [])  
# 第四次迭代(进入 dir2)
('root/dir2', [], ['file2.log'])

 遍历所有文件并获取完整路径

python

import os

for root, dirs, files in os.walk("data"):
    for file in files:
        full_path = os.path.join(root, file)  # 拼接完整路径[3,6](@ref)
        print(f"发现文件:{full_path}")

2. 批量重命名文件

folder = "docs"
for filename in os.listdir(folder):
    if filename.endswith(".txt"):
        new_name = filename.replace(" ", "_")
        os.rename(
            os.path.join(folder, filename),
            os.path.join(folder, new_name)
        )

3. 安全创建临时目录

import tempfile

def create_temp_dir():
    temp_dir = tempfile.mkdtemp()
    try:
        print(f"临时目录已创建: {temp_dir}")
        # 执行操作...
    finally:
        os.rmdir(temp_dir)
        print("临时目录已删除")

四、注意事项

​1. 路径处理

  • 不要手动拼接路径:使用 os.path.join() 替代字符串拼接,避免跨平台问题:
# 错误方式
path = "dir" + "/" + "file.txt"  # 在Windows下失效

# 正确方式
path = os.path.join("dir", "file.txt")

2. 异常处理

  • 文件操作需捕获常见异常:
try:
    os.remove("non_exist.txt")
except FileNotFoundError as e:
    print(f"文件不存在: {e}")

3. 安全性

  • 谨慎使用 os.system():可能引发命令注入漏洞,优先使用 subprocess.run()
# 危险!用户输入可能包含恶意命令
user_input = "some; rm -rf /"
os.system(f"echo {user_input}")

# 安全方式
import subprocess
subprocess.run(["echo", user_input], check=True)

4. 跨平台兼容性

  • 检查系统差异:
if os.name == 'posix':
    print("运行在 Unix-like 系统")
elif os.name == 'nt':
    print("运行在 Windows 系统")

五、与 shutil 库的对比

功能os 库shutil 库
文件复制❌ 无直接支持✅ shutil.copy()
目录删除✅ 只能删空目录✅ shutil.rmtree() 递归删除
压缩文件❌ 无支持✅ shutil.make_archive()
元数据保留❌ 需手动处理✅ copystat() 保留权限和时间

到此这篇关于Python中-os库用法介绍的文章就介绍到这了,更多相关Python -os库介绍内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django DRF认证组件流程实现原理详解

    Django DRF认证组件流程实现原理详解

    这篇文章主要介绍了Django DRF认证组件流程实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python实现微信高效自动化操作

    Python实现微信高效自动化操作

    在如今数字化时代,人们对于效率的追求越来越强烈,而PyAutoGUI和Pyperclip作为Python中的两个强大库,为我们实现自动化操作提供了便利,下面我们就来看看如何利用这两个库实现微信自动化操作吧
    2023-10-10
  • Python接口自动化浅析数据驱动原理

    Python接口自动化浅析数据驱动原理

    这篇文章主要介绍了Python接口自动化浅析数据驱动原理,文中会详细描述怎样使用openpyxl模块操作excel及结合ddt来实现数据驱动,有需要的朋友可以参考下
    2021-08-08
  • matplotlib之pyplot模块坐标轴范围设置(autoscale(),xlim(),ylim())

    matplotlib之pyplot模块坐标轴范围设置(autoscale(),xlim(),ylim())

    这篇文章主要介绍了matplotlib之pyplot模块坐标轴范围设置(autoscale(),xlim(),ylim()),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法

    python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,本文讲述了python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
    2018-09-09
  • python找出因数与质因数的方法

    python找出因数与质因数的方法

    这篇文章主要介绍了python找出因数与质因数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python实现学生通讯录管理系统

    python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    这篇文章主要介绍了Python列表list内建函数用法,结合具体实例形式分析了list中insert、remove、index、pop等函数的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2017-07-07
  • Python的三种主要模块介绍

    Python的三种主要模块介绍

    这篇文章介绍了Python的三类主要模块,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Python 找到列表中满足某些条件的元素方法

    Python 找到列表中满足某些条件的元素方法

    今天小编就为大家分享一篇Python 找到列表中满足某些条件的元素方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论