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

Python os模块详解

文章目录

  • Python `os` 模块详解
    • 引言
  • 什么是 `os` 模块?
  • 文件和目录操作
    • 文件路径操作
    • 创建、删除和移动文件
    • 遍历目录
  • 功能分类讲解
    • 文件与目录操作
    • 路径操作
    • 环境变量操作
    • 进程管理
  • 更多高级内容
  • 环境变量管理
  • 执行系统命令
  • 示例:文件备份脚本
  • 总结


Python os 模块详解

引言

在 Python 编程中,os 模块是用于与操作系统进行交互的标准模块之一。它提供了对底层操作系统功能的访问,使得我们能够执行诸如文件操作、目录管理、路径操作、环境变量访问等多种任务。本篇文章将全面介绍 os 模块的常用功能,并通过代码示例展示它的实际应用。

什么是 os 模块?

os 模块是 Python 标准库的一部分,它提供了与操作系统相关的功能,允许我们使用 Python 代码对文件系统和操作系统进行常见的操作。我们可以使用它来管理文件和目录、操作环境变量、执行系统命令等。

首先,在代码中导入 os 模块:

import os

文件和目录操作

文件路径操作

os 模块提供了一些函数,用于处理文件路径,确保代码在不同操作系统上的兼容性。

  • os.getcwd(): 获取当前工作目录。
  • os.path.join(): 合并目录路径,适用于跨平台。
  • os.path.abspath(): 获取绝对路径。

示例:

import os# 获取当前工作目录
current_dir = os.getcwd()
print(f"当前工作目录: {current_dir}")# 拼接路径
new_path = os.path.join(current_dir, "new_folder", "file.txt")
print(f"拼接路径: {new_path}")# 获取绝对路径
abs_path = os.path.abspath("file.txt")
print(f"绝对路径: {abs_path}")

创建、删除和移动文件

使用 os 模块可以创建和删除文件或目录,此外还能重命名或移动文件。

  • os.mkdir(): 创建目录。
  • os.rmdir(): 删除空目录。
  • os.remove(): 删除文件。
  • os.rename(): 重命名文件或目录。

示例:

# 创建目录
os.mkdir("test_dir")# 删除文件
os.remove("test_file.txt")# 重命名文件
os.rename("old_name.txt", "new_name.txt")# 删除空目录
os.rmdir("test_dir")

遍历目录

os 模块提供了 os.listdir()os.walk() 来遍历目录,适用于处理大批量文件的场景。

  • os.listdir(): 列出目录中的文件和子目录。
  • os.walk(): 递归遍历目录树。

示例:

# 列出目录内容
files = os.listdir(".")
print(f"当前目录中的文件和文件夹: {files}")# 遍历目录树
for root, dirs, files in os.walk("."):print(f"当前目录: {root}")print(f"包含的子目录: {dirs}")print(f"包含的文件: {files}")

功能分类讲解

为了更有条理,可以根据功能将 os 模块的函数分成几类,并为每一类提供详细的讲解和代码示例。例如:

文件与目录操作

import os# 获取当前工作目录
print(os.getcwd())  # 改变当前工作目录
os.chdir('/home/sy')# 创建单层目录
os.mkdir('new_dir')# 创建多层目录
os.makedirs('parent/child/grandchild')# 删除空目录
os.rmdir('new_dir')# 递归删除目录
os.removedirs('parent/child/grandchild')# 列出指定目录中的所有文件和文件夹
print(os.listdir('/home/sy'))# 文件重命名
os.rename('old.txt', 'new.txt')# 获取文件大小
print(os.path.getsize('new.txt'))

路径操作

路径操作是 os.path 子模块的主要功能,可以详细解释不同函数的作用:

import os# 将相对路径转换为绝对路径
print(os.path.abspath('./file.txt'))# 分割路径为目录和文件名
print(os.path.split('/home/user/file.txt'))# 获取文件的扩展名
print(os.path.splitext('/home/user/file.txt'))# 判断是否为文件或目录
print(os.path.isfile('/home/user/file.txt'))
print(os.path.isdir('/home/user/folder'))# 判断文件或路径是否存在
print(os.path.exists('/home/user/file.txt'))

环境变量操作

可以展示如何获取、设置和修改环境变量:

import os# 获取环境变量
print(os.getenv('PATH'))# 设置新的环境变量
os.environ['MY_VAR'] = '/path/to/my_var'
print(os.getenv('MY_VAR'))# 将一个目录临时加入环境变量(当前会话有效)
os.environ['PATH'] += ':/new/path'
os.system('some_command')  # 现在可以执行 new_path 中的可执行文件

进程管理

演示如何使用 os.system() 执行系统命令,如何启动新的进程,或者通过 os.exit() 退出程序:

import os# 执行系统命令
os.system('ls -l')# 获取当前进程ID
print(os.getpid())# 获取父进程ID
print(os.getppid())# 退出程序
os._exit(0)  # 使用 _exit() 而不是 exit() 来直接终止进程

更多高级内容

可以探讨 os.walk()、文件描述符、权限控制等稍微更复杂的主题:

import os# 遍历目录树,生成目录名、子目录名、文件名
for dirpath, dirnames, filenames in os.walk('/home/sy'):print(f'Found directory: {dirpath}')for filename in filenames:print(f'\tFile: {filename}')# 修改文件权限
os.chmod('new_file.txt', 0o755)  # rwxr-xr-x# 创建软链接
os.symlink('source_file.txt', 'link_to_source.txt')

环境变量管理

os 模块可以用来访问和修改系统的环境变量。

  • os.getenv(): 获取环境变量。
  • os.putenv(): 设置环境变量。
  • os.environ: 获取当前所有环境变量。

示例:

# 获取环境变量
path = os.getenv("PATH")
print(f"系统 PATH 环境变量: {path}")# 设置环境变量
os.putenv("MY_VAR", "12345")
print(f"自定义环境变量 MY_VAR: {os.getenv('MY_VAR')}")# 查看所有环境变量
for key, value in os.environ.items():print(f"{key}: {value}")

执行系统命令

os 模块允许我们使用 os.system() 来运行系统命令,类似于直接在终端或命令行中执行命令。

# 执行系统命令
os.system("echo Hello, World!")
os.system("mkdir new_folder")

需要注意的是,os.system() 运行系统命令时并不会返回命令的输出,若需要获取命令的输出,可以使用 subprocess 模块。


示例:文件备份脚本

利用 os 模块,我们可以轻松编写一个自动化的文件备份脚本,将指定目录中的文件备份到另一个位置。

import os
import shutildef backup_files(source_dir, backup_dir):# 如果备份目录不存在,创建它if not os.path.exists(backup_dir):os.makedirs(backup_dir)# 遍历源目录中的所有文件和文件夹for filename in os.listdir(source_dir):source_file = os.path.join(source_dir, filename)backup_file = os.path.join(backup_dir, filename)# 如果是文件,则复制到备份目录if os.path.isfile(source_file):shutil.copy(source_file, backup_file)print(f"备份文件: {filename}")else:print(f"跳过非文件: {filename}")# 使用示例
source_directory = "./source"
backup_directory = "./backup"
backup_files(source_directory, backup_directory)

总结

本文详细介绍了 Python 中 os 模块的主要功能,包括文件和目录的操作、环境变量的管理以及执行系统命令。通过丰富的代码示例,你可以在日常的 Python 编程中有效地利用 os 模块来处理与操作系统相关的任务。

os 模块的应用十分广泛,尤其在编写自动化脚本、文件管理和跨平台应用时非常有用。希望这篇博文能够帮助你更好地理解和使用 os 模块。


http://www.mrgr.cn/news/57933.html

相关文章:

  • PON架构(全光网络)
  • 【排序】——2.快速排序法(含优化)
  • vue实现下载二维码
  • Pytorch Note
  • Centos7安装Docker保姆级
  • Android静态变量中的字段被置空了
  • RabbitMQ常见问题持续汇总
  • AI带货主播如何打造真实视觉效果!
  • Solon Ioc 的魔法 - 注解注入器(也可叫虚空注入器)
  • 力扣之613.直线上的最近距离
  • 宠物空气净化器怎么买最划算?宠物空气净化器选购经验真实分享!
  • js逆向协议破解滑块验证
  • 【Blender】 学习笔记(一)
  • 笨蛋学习FreeMarker
  • Leecode热题100-416.分割等和子集
  • 6317A可调谐激光源
  • 草地杂草数据集野外草地数据集田间野草数据集YOLO格式VOC格式目标检测计算机视觉数据集
  • 【数据分享】全国各省份资源和环境-废气中主要污染物排放(2011-2021年)
  • AcWing 3534:矩阵幂 ← 矩阵快速幂
  • 中国建设银行广东省分行珠海市分行营业网点装修工程采购项目市场调研供应商征集公告
  • 1024程序员节
  • 二进制安全研究员的成长之路---栈溢出篇(一)
  • 【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • 时间服务器 NTP协议
  • C++位操作实战:掩码、提取与组装
  • 073_基于springboot+Android的“川味游”app的设计与开发