Python | OS模块操作

news/2025/2/19 7:53:15/

一、介绍

        Python的os模块提供了许多与操作系统交互的函数,可以用于文件和目录的操作、进程管理、环境变量的访问等。以下是os模块的一些常用功能:

  1. 文件和目录操作:os模块提供了许多函数来进行文件和目录的操作,如创建文件夹(os.mkdir)、删除文件夹(os.rmdir)、重命名文件或文件夹(os.rename)、获取文件或目录信息(os.stat)等。

  2. 环境变量:os模块提供了访问和修改环境变量的函数,如获取指定环境变量的值(os.getenv)、设置环境变量的值(os.putenv)等。

  3. 进程管理:os模块提供了一些函数来进行进程管理,如启动一个新的进程(os.system)、获取当前进程的ID(os.getpid)、等待子进程结束(os.wait)等。

  4. 路径操作:os模块提供了一些函数来进行路径操作,如获取当前工作目录(os.getcwd)、拼接路径(os.path.join)、判断路径是否存在(os.path.exists)等。

  5. 杂项操作:os模块还提供了一些其他杂项操作,如执行系统命令(os.popen)、修改文件权限(os.chmod)、获取文件列表(os.listdir)等。

        总的来说,os模块提供了许多与操作系统交互的函数,可以帮助我们在Python程序中进行文件和目录操作、进程管理等操作。详细的文档可以在Python官方文档中找到。

二、目录操作

2.1 获取目录

        2.1.1 获取当前工作目录绝对路径
os.getcwd()
>>> E:\Work\WorkScript
        2.1.2 获取当前工作目录绝对路径(Unicode编码)
os.getcwdb()
>>> b'E:\\Work\\WorkScript'
        2.1.3 获取当前目录
os.curdir
>>> .
        2.1.4 获取当前目录上级目录
os.pardir
>>> ..

2.2 判断目录是否存在

os.path.lexists(指定路径)
>>> True or False

2.3 获取目录下内容

        默认当前目录:

os.listdir()
>>> ['.idea', '.venv', 'test.py']

        指定目录:

os.listdir(指定目录)
>>> ['.idea', '.venv', 'test.py']

        目录不存在时报错,获取前先判断。

import osif os.path.lexists(指定目录):print(os.listdir(指定目录))
else:print("目录不存在")

2.4 创建目录

        目录不存在时报错,创建前先判断。

os.mkdir(指定目录)
import osif os.path.lexists(指定目录): print("指定目录已存在")
else:os.mkdir(指定目录)

2.5 删除目录

        目录不存在或非空时报错,删除前先判断。

os.rmdir(指定目录) 
import osif os.path.lexists(指定目录):if os.listdir(指定目录):print("目录非空")else:os.rmdir(指定目录)
else:print("目录不存在")

2.6 重命名目录

        目录不存在时报错,重命名前先判断。

os.rename(旧路径名, 新路径名)
import osif os.path.lexists(指定目录):os.rename(指定目录, 新路径名)
else:print('目录不存在')

2.7 切换目录

os.chdir(指定绝对路径)

2.8 判断是否是目录

os.path.isdir(指定目录)
>>> True or False

2.9 判断是否是绝对目录

os.path.isabs(指定目录)
>>> True or False

三、路径操作

3.1 路径拼接

os.path.join("123","456","789")
>>> 123\456\789

3.2 分离路径

os.path.split("E:/Work/WorkScript/test.py")
>>> ('E:/Work/WorkScript', 'test.py')os.path.split("E:/Work/WorkScript")
>>> ('E:/Work', 'WorkScript')

3.3 获取路径中文件名

os.path.basename("E:/Work/WorkScript/test.py")
>>> test.py

3.4 获取绝对路径

os.path.abspath("")
>>> E:\Work\WorkScriptos.path.abspath("test.py")
>>> E:\Work\WorkScript\test.py

3.5 获取文件扩展名

os.path.splitext("E:/Work/WorkScript/test.py")
>>> ('E:/Work/WorkScript/test', '.py')

四、文件操作

4.1 打开文件

        指令格式:

os.open(path, flags, mode)其中flag有如下:os.O_RDONLY : 以只读的方式打开os.O_WRONLY : 以只写的方式开os.O_RDWR : 以读写的方式打开os.O_NONBLOCK : 打开时不阻塞os.O_APPEND : 以追加的方式打开os.O_CREAT : 创建或打开文件os.O_TRUNC : 打开一个文件并截断它的长度为零(必须有写权限)

        示例:

# 打开文件进行读取操作
with open("file.txt", "r") as file:# 读取文件内容content = file.read()print("文件内容:", content)

4.2 关闭文件

        在Python中,当使用open()函数打开文件后,应该在文件操作完成后显式地关闭文件,以释放资源并确保文件被正确保存。可以使用文件对象的close()方法来关闭文件。

# 打开文件进行读取操作
file = open("file.txt", "r")# 读取文件内容
content = file.read()
print("文件内容:", content)# 关闭文件
file.close()

        另一种更安全的方式是使用with语句来打开文件,这样可以确保文件在with代码块结束时自动关闭,无需显式调用close()方法。

# 使用with语句打开文件进行读取操作
with open("file.txt", "r") as file:# 读取文件内容content = file.read()print("文件内容:", content)

4.3 创建文件

# 定义文件路径
file_path = "new_file.txt"# 打开文件并写入内容
with open(file_path, "w") as file:file.write("Hello, this is a new file created using Python!")print("文件创建成功:", file_path)

4.4 重命名文件

import os# 定义旧文件名和新文件名
old_file_name = "old_file.txt"
new_file_name = "new_file.txt"# 重命名文件
os.rename(old_file_name, new_file_name)print("文件重命名成功:", new_file_name)

4.5 删除文件

import os# 定义要删除的文件路径
file_path = "file_to_delete.txt"# 删除文件
os.remove(file_path)print("文件删除成功:", file_path)

4.6 判断文件是否存在

import os# 定义文件路径
file_path = "file.txt"# 判断文件是否存在
if os.path.exists(file_path):print("文件存在:", file_path)
else:print("文件不存在:", file_path)

五、环境变量操作

5.1 获取环境变量字典

os.environ

        使用os.environ来获取系统的所有环境变量,并将其存储在env_vars字典中。然后遍历这个字典,打印每个环境变量的键值对,这样可以查看系统中所有的环境变量及其对应的值。

import os# 获取系统的所有环境变量
env_vars = os.environ# 打印所有环境变量
for key, value in env_vars.items():print(f"{key} : {value}")

5.2 获取指定环境变量

os.getenv(env_var_name)

        使用os.getenv()函数来获取名为"PATH"的环境变量的值,并将其存储在env_var_value变量中。然后,打印出该环境变量的名称和对应的值。

import os# 指定要获取的环境变量名称
env_var_name = "PATH"# 获取指定环境变量的值
env_var_value = os.getenv(env_var_name)print(f"{env_var_name} 的值为: {env_var_value}")

5.3 添加环境变量

os.putenv("NEW_VARIABLE", "new_value")

        使用os 模块的putenv()函数来添加或修改环境变量。putenv()函数接受环境变量的名称和值作为参数,并将其添加到系统的环境变量中。

import os# 添加新的环境变量
os.putenv("NEW_VARIABLE", "new_value")

六、通用自定义函数 

6.1 获取指定目录下所有一级目录集合

def get_next_all_folder(path):"""获取指定目录下所有一级目录集合:param path: 指定路径:return: 一级目录文件夹集合"""folder_list = []if not os.path.lexists(path):print("输入路径不存在")else:below_paths = os.listdir(path)for below_path in below_paths:entire_path = os.path.join(path, below_path)if os.path.isdir(entire_path):folder_list.append(entire_path)return folder_list

6.2 获取指定目录下指定名称的一级目录集合

import os
import globdef get_next_assign_folder(path, assign_name):"""获取指定目录下指定名称的一级目录集合:param path: 指定路径:param assign_name: 指定文件/文件夹名称(可模糊查询,例:"csdn*" 查询以csdn开头的文件夹):return: 一级目录文件夹集合"""folder_list = []if not os.path.lexists(path):print("输入路径不存在")else:folder_list = glob.glob(os.path.join(path, assign_name))return folder_list

6.3 批量判断指定文件夹路径集合是否存在某文件

def judge_file_exists(folder_list, file_name):"""批量判断指定文件夹路径集合是否存在某文件:param folder_list: 指定文件夹集合:param file_name: 待判断的文件名称:return: 该一级目录以及是否存在文件的元组 (first_level_path , True or False)"""judge_dict = {}for folder_path in folder_list:file_path = os.path.join(folder_path, file_name)if os.path.exists(file_path):judge_dict[file_path] = Trueelse:judge_dict[file_path] = Falsereturn judge_dict


http://www.ppmy.cn/news/1362250.html

相关文章

基于springboot+vue的智慧社区系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

react + Typescript 中 react有多少内置的类型 分别是什么

react Typescript 中 react有多少内置的类型 分别是什么 React 和 TypeScript 结合使用时,React 提供了一系列的内置类型(也称为类型定义或类型别名)来帮助你在 TypeScript 中编写类型安全的代码。这些类型定义涵盖了 React 的各个方面&…

08 Redis之集群的搭建和复制原理+哨兵机制+CAP定理+Raft算法

5 Redis 集群 2.8版本之前, Redis采用主从集群模式. 实现了数据备份和读写分离 2.8版本之后, Redis采用Sentinel哨兵集群模式 , 实现了集群的高可用 5.1 主从集群搭建 首先, 基本所有系统 , “读” 的压力都大于 “写” 的压力 Redis 的主从集群是一个“一主多从”的读写分…

apidoc接口文档的自动更新与发布

文章目录 一、概述二、环境准备三、接口文档生成1. 下载源码2. 初始化3.执行 四、文档发布五,配置定时运行六,docker运行七,优化方向 一、概述 最近忙于某开源项目的接口文档整理,采用了apidoc来整理生成接口文档。 apidoc是一个…

32单片机基础:OLED调试工具的使用

下面会介绍OLED显示屏的驱动函数模块,先学会如何使用,至于OLED屏幕的原理和代码编写, 我们之后会再写一篇。 现在我们就是用OLED当一个调试的显示屏,方便我们调试程序。 为什么要调试呢,是为了方便我们看现象&#…

半导体物理基础-笔记(续)

源内容参考:https://www.bilibili.com/video/BV11U4y1k7zn/?spm_id_from333.337.search-card.all.click&vd_source61654d4a6e8d7941436149dd99026962 掺杂半导体的费米能级与温度及杂质浓度的关系图 在温度一定的条件下,施主杂质浓度越高&#xff0…

【Redis】安装与部署-Ubuntu

在Ubuntu上部署redis 安装环境:ubuntu 20.04 1.安装Redis: 在终端中运行以下命令来安装Redis: linuxubuntu:/mnt/hgfs/GB28181$ sudo apt install redis-server2.配置Redis: Redis的默认配置文件位于/etc/redis/redis.conf 一…

java 内存模型

程序计数器 线程私有主要字节码解释器通过读取程序计数器来选取下一条需要执行的指令,比如分支,循环,跳转和异常处理如果执行的是java 方法,那么程序计数器记录的时候虚拟机字节码指令的地址,如果执行的是native 方法…