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

os模块

os 模块是 Python 中用于与操作系统进行交互的标准库之一。它提供了许多函数来执行文件和目录操作,管理进程以及与操作系统交互的其他功能。

下面是一些 os 模块中常用的函数和功能:

  • 文件和目录操作

    • os.getcwd(): 返回当前工作目录的路径。
    • os.chdir(path): 改变当前工作目录到指定的路径。
    • os.listdir(path='.'): 返回指定目录中的文件和目录的列表。
    • os.mkdir(path): 创建一个目录。
    • os.makedirs(path): 递归地创建目录。
    • os.remove(path): 删除指定的文件。
    • os.rmdir(path): 删除指定的目录。
    • os.removedirs(path): 递归地删除目录。
    • os.stat 用于获取文件或目录的状态信息。
    • os.startfile 用于启动与文件关联的默认应用程序。
  • 路径操作

    • os.path.join(path1, path2, ...): 将多个路径组合成一个。
    • os.path.exists(path): 检查指定路径是否存在。
    • os.path.isdir(path): 判断指定路径是否为目录。
    • os.path.isfile(path): 判断指定路径是否为文件。
    • os.path.basename(path): 返回路径中的文件名部分。
    • os.path.dirname(path): 返回路径中的目录部分。
    • os.path.abspath(path): 返回路径的绝对路径。
  • 进程管理

    • os.system(command): 在子shell中执行系统命令。
    • os.popen(command[, mode[, bufsize]]): 打开一个管道返回文件对象。
    • os.spawn*() 系列函数:以新进程执行指定的程序。
    • os.exec*() 系列函数:用指定的程序替换当前进程。
    • os.fork(): 创建一个子进程(Unix/Linux 系统)。
  • 环境变量

    • os.environ: 包含当前环境变量的字典。
    • os.getenv(var_name[, default]): 获取指定环境变量的值。
  • 权限操作

    • os.chmod(path, mode): 修改文件或目录的权限。
    • os.chown(path, uid, gid): 修改文件或目录的所有者和所属组。

这些是 os 模块中的一些常见功能,它们允许 Python 程序与操作系统进行各种交互。

目录

①os.getcwd()

②os.chdir(path)

③os.listdir(path='.')

④os.mkdir(path)

⑤os.makedirs

⑥os.remove(path)

⑦os.rmdir(path)

⑧os.stat

⑨os.startfile()


①os.getcwd()

os.getcwd() 是 Python 中 os 模块提供的函数之一,用于获取当前工作路径(current working directory)。

import os# 获取当前工作路径
current_working_directory = os.getcwd()# 打印当前工作路径
print("当前工作路径:", current_working_directory)

这个函数不需要任何参数,调用它会返回一个表示当前工作路径的字符串。在上面的例子中,current_working_directory 变量将包含当前 Python 脚本或交互式环境所在的目录的路径。

②os.chdir(path)

os.chdir(path) 是 Python 中的一个函数,用于改变当前工作目录到指定的路径。

以下是 os.chdir(path) 函数的基本使用方法:

import os# 打印当前工作目录
print("当前工作目录:", os.getcwd())# 改变当前工作目录到指定路径
os.chdir('C:/')# 打印改变后的工作目录
print("改变后的工作目录:", os.getcwd())

在上面的示例中,os.chdir(path) 函数将当前工作目录更改为指定的路径 'C:/'。可以将 path
替换为想要的目标目录路径。

需要注意的是,os.chdir() 函数可能会抛出异常,例如 FileNotFoundError,如果指定的路径不存在或者没有权限进行更改。因此,在使用 os.chdir() 函数时,最好在调用前做好错误处理,以确保程序的稳定性。

③os.listdir(path='.')

os.listdir(path='.') 是 Python 中的一个函数,用于返回指定目录中的文件和子目录的列表。

以下是 os.listdir(path='.') 函数的基本使用方法:

import os# 获取当前工作目录中的文件和子目录列表
contents = os.listdir()# 或者可以显式地指定路径
# contents = os.listdir('/path/to/directory')# 遍历列表并打印每个条目
for item in contents:print(item)

在这个示例中,os.listdir() 函数返回当前工作目录中的文件和子目录的列表。你也可以显式地指定一个路径作为参数,以获取特定目录中的内容。

返回的列表包含指定目录中的所有条目的名称,包括文件和子目录。

需要注意的是,如果指定的路径不存在,os.listdir() 函数将会抛出一个 FileNotFoundError 异常。因此,在使用该函数时,最好在调用前做好错误处理,以确保程序的稳定性。

④os.mkdir(path)

os.mkdir(path) 是 Python 中的一个函数,用于创建一个新的目录(文件夹)。

以下是 os.mkdir(path) 函数的基本使用方法:

import os# 指定要创建的目录路径
new_directory = '/path/to/new/directory'# 创建新目录
os.mkdir(new_directory)

在这个示例中,os.mkdir() 函数将在指定路径下创建一个新的目录。需要将 path 替换为想要创建的目录的路径。

需要注意的是,如果指定的目录已经存在,os.mkdir() 函数将会抛出一个 FileExistsError 异常。因此,在创建新目录之前,最好先检查目录是否已经存在,或者使用 os.makedirs() 函数来创建目录及其父目录,以确保程序的稳定性。

⑤os.makedirs(path)

os.makedirs() 函数也是 Python 中用于创建目录的函数,不同的是,它可以递归地创建多层目录。如果其中某些目录已经存在,它会忽略这些已存在的目录。

以下是 os.makedirs() 函数的基本使用方法:

import os# 指定要创建的目录路径
new_directory = '/path/to/new/directory'# 创建新目录(包括其父目录,如果父目录不存在则会创建)
os.makedirs(new_directory)

os.mkdir() 不同,os.makedirs() 可以创建多层目录结构,即使父目录不存在也可以一并创建。这在需要创建嵌套的目录结构时非常有用。

需要注意的是,如果指定的路径中的任何一个部分是一个已经存在的文件,而不是一个目录,则会引发 FileExistsError 异常。因此,在创建目录之前,最好先检查路径的合法性,以确保程序的稳定性。

⑥os.remove(path)

os.remove(path) 是 Python 中用于删除文件的函数。它会删除指定路径下的文件。

以下是 os.remove(path) 函数的基本使用方法:

import os# 指定要删除的文件路径
file_to_delete = '/path/to/file.txt'# 删除文件
os.remove(file_to_delete)

在这个示例中,os.remove() 函数将删除指定路径下的文件。需要将 path 替换为要删除的文件的路径。

需要注意的是,如果指定的文件不存在,os.remove() 函数将会引发 FileNotFoundError 异常。因此,在删除文件之前,最好先检查文件是否存在,以确保程序的稳定性。如果要删除目录而不是文件,可以使用 os.rmdir() 函数,不过要确保目录是空的,否则会引发 OSError 异常。如果要删除目录及其内容,可以使用 shutil.rmtree() 函数。删除文件和目录时,请谨慎操作,以免不可逆地删除重要数据。

⑦os.rmdir(path)

os.rmdir(path) 是 Python 中用于删除空目录的函数。它会删除指定路径下的目录,前提是这个目录为空,即其中没有文件或子目录。

以下是 os.rmdir(path) 函数的基本使用方法:

import os# 指定要删除的目录路径
directory_to_delete = '/path/to/empty_directory'# 删除空目录
os.rmdir(directory_to_delete)

在这个示例中,os.rmdir() 函数将删除指定路径下的空目录。需要将 path 替换为要删除的目录的路径。

需要注意的是,如果指定的目录不为空,即其中包含文件或子目录,os.rmdir() 函数将引发 OSError 异常。在删除非空目录时,可以使用 shutil.rmtree() 函数,它会递归地删除整个目录树,包括目录中的所有文件和子目录。

os.removedirs(path) 函数是 Python 中用于删除目录的函数,它可以递归地删除指定路径下的所有空目录,直到遇到非空目录为止。这个函数会尽可能地删除路径中的每个目录,直到根目录为止。

以下是 os.removedirs(path) 函数的基本使用方法:

import os# 指定要删除的目录路径
directory_to_delete = '/path/to/empty_directory'# 递归地删除目录及其父目录(如果它们为空)
os.removedirs(directory_to_delete)

在这个示例中,os.removedirs() 函数将递归地删除指定路径下的所有空目录,直到遇到非空目录为止。需要将 path 替换为要删除的目录的路径。

需要注意的是,与 os.rmdir() 不同,os.removedirs() 可以删除多个连续的空目录,直到遇到第一个非空目录为止。如果某个目录不为空,os.removedirs() 将停止并引发 OSError 异常。

⑧os.stat(path)

os.stat() 是 Python 中用于获取文件或目录的状态信息的函数。它返回一个包含文件或目录的各种信息的命名元组(named tuple)。

以下是 os.stat() 函数的基本使用方法:

import os# 指定要获取状态信息的文件或目录路径
path = '/path/to/file_or_directory'# 获取指定路径的状态信息
status = os.stat(path)# 输出状态信息
print(status)

os.stat() 函数将返回一个包含以下属性的命名元组:

  • st_mode: 文件的模式(权限)。
  • st_ino: 文件的 inode 号。
  • st_dev: 文件的设备号。
  • st_nlink: 文件的硬链接数。
  • st_uid: 文件的所有者的用户 ID。
  • st_gid: 文件的所有者的组 ID。
  • st_size: 文件的大小,以字节为单位。
  • st_atime: 文件的最后访问时间。
  • st_mtime: 文件的最后修改时间。
  • st_ctime: 文件的创建时间。

可以通过访问返回的命名元组的属性来获取文件或目录的各种状态信息。例如,要获取文件的大小,可以使用 status.st_size

需要注意的是,os.stat() 函数在 Windows 和 Unix-like 系统上的行为可能会有所不同。在某些情况下,它可能不返回所有期望的属性。

⑨os.startfile()

在 Windows 平台上,可以使用 os.startfile() 函数来启动与指定文件关联的默认程序。这个函数比较方便,但是仅限于 Windows 平台使用。

以下是 os.startfile() 函数的基本使用方法:

import os# 指定要启动的文件路径
file_to_open = 'C:\\path\\to\\file.txt'# 使用默认关联的程序启动文件
os.startfile(file_to_open)

在这个示例中,os.startfile() 函数会打开 Windows 上与指定文件关联的默认程序,类似于双击文件在文件资源管理器中打开它。需要将 file_to_open 替换为要启动的文件的路径。

需要注意的是,os.startfile() 函数仅在 Windows 平台上可用,如果你的代码需要在其他操作系统上运行,最好使用跨平台的解决方案,如使用 subprocess.Popen() 函数。

相关文章:

os模块

os 模块是 Python 中用于与操作系统进行交互的标准库之一。它提供了许多函数来执行文件和目录操作,管理进程以及与操作系统交互的其他功能。 下面是一些 os 模块中常用的函数和功能: 文件和目录操作: os.getcwd(): 返回当前工作目录的路径。…...

【C语言进阶】深度剖析数据在内存中的存储--上

1. C语言中的数据类型的简单介绍 注:C99标准里面,定义了bool类型变量。这时,只要引入头文件stdbool.h ,就能在C语言里面正常使用bool类型。 1.1 在C语言中各类型所占内存空间的大小如下 char类型的数据类型大小为1字节即8比特位。…...

【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2

【bifrost】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行1 完成了WSL2的安装。13900K 的电脑安装了ubuntu22.04构建中出现了一些问题,fix了。发现libuv 似乎不识别,认为是libuv.so ,无法让worker识别到uv 从而没构建。干脆单独构建好了,官方的脚本如此:而且…...

【教程】C++语言基础学习笔记(七)——Array数组

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…...

BUGKU-WEB GET

题目描述 没有提示,就一个get,启动场景看看: 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句:使用get…...

蓝桥杯每日一题----唯一分解定理

唯一分解定理 1.内容 任何一个大于1的整数n都可以分解成若干个质数的连乘积,如果不计各个质数的顺序,那么这种分解是惟一的,即若n>1,则有 n ∏ p i j n\prod{p^j_i} n∏pij​ 这里的 p i p_i pi​是质数。可以进行简单证明…...

openssl3.2 - osslsigncode工程的学习

文章目录 openssl3.2 - osslsigncode工程的学习概述笔记工程库地址工程的编译osslsigncodeM工程文件列表osslsigncodeM工程搭建细节原始工程实现的改动自己封装的包含openssl和curl的实现osslsigncodeM工程命令行的用法备注 - VS2019调试环境备注 - 如果要单步openssl的API学学…...

HTML 超文本标记语言

超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言:HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍&#xff0c…...

sklearn:机器学习 分类特征编码category_encoders

文章目录 category_encoders简介OrdinalEncoder 序列编码OneHotEncoder 独热编码TargetEncoder 目标编码Binary Encoder 二进制编码BaseNEncoder 贝叶斯编码LeaveOneOutEncoder 留一法HashingEncoder 哈希编码CatBoostEncoder catboost目标编码CountEncoder 频率编码WOEEncoder…...

C++错误[错误] call of overloaded ‘min(int, int)‘ is ambiguous

错误代码&#xff1a; #include<iostream> using namespace std;template <class T> T min(T x,T y){if(x<y){return x;}else return y; }int main(){int n12,n210;double d11.5,d25.6;cout<<min(n1,n2)<<endl;cout<<min(d1,d2)<<endl…...

2024全栈元年-thinkphp-数据操作

thinkphp 数据相关操作 1.单数据查询 1、单数据查询 ,Db::table(‘tp_stu’) 必须加前缀 2、如果只是查询符合条件的使用where find,如果没有符合条件的返回null 3、使用 findOrFail 没有数据会抛出异常 4、使用 findOrEmpty 没有数据会返回【】 5、得到最近一个原生SQL …...

HTML世界之第二重天

目录 一、HTML 格式化 1.HTML 文本格式化标签 2.HTML "计算机输出" 标签 3.HTML 引文, 引用, 及标签定义 二、HTML 链接 1.HTML 链接 2.HTML 超链接 3.HTML 链接语法 4.文本链接 5.图像链接 6.锚点链接 7.下载链接 8.Target 属性 9.Id 属性 三、HTML …...

社区经营的好处与优势:为何越来越多的人选择社区店?

社区店&#xff0c;这个曾经被视为小型、局限的商业模式&#xff0c;如今正逐渐崭露头角&#xff0c;成为众多创业者和消费者的首选。 特别是在鲜奶吧这样的细分市场中&#xff0c;社区店更是展现出了其独特的魅力和优势。作为一名拥有五年鲜奶吧经营经验的创业者&#xff0c;…...

C语言系列1——详解C语言:变量、常量与数据类型

目录 写在开始1. 变量与常量的概念1.1. 变量1.2. 常量1.3. 变量与常量的比较1.4. 选择变量还是常量 2. C语言中的基本数据类型2.1. 整型&#xff08;Integer Types&#xff09;2.2. 浮点型&#xff08;Floating-Point Types&#xff09;2.3. 字符型&#xff08;Character Type&…...

WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater

前面跟大家介绍了『如何修改WordPress后台管理员用户名&#xff1f;推荐2种简单方法』一文&#xff0c;但是对于有很多用户的站长来说&#xff0c;操作有点复杂&#xff0c;而且无法发邮件通知对方&#xff0c;所以今天boke112百科向大家推荐一款可以直接在WordPress后台修改所…...

C语言中的数据类型-强转

强制类型转换 概念&#xff1a;将某种类型的数据转化我们需要的数据类型&#xff0c;注意强制类型转化是临时强转&#xff0c;不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式&#xff1a;(需要转化数据类型)变量名 #inclu…...

大数据可视化BI分析工具Apache Superset结合内网穿透实现远程访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…...

C# 线程与线程池的使用方法、注意事项

在C#中&#xff0c;线程和线程池是两种用于实现多线程编程的方式。线程用于执行并发任务&#xff0c;而线程池提供了一种更有效率的方式来管理和复用线程资源。 C# 线程&#xff08;System.Threading.Thread&#xff09; 创建和启动线程&#xff1a; Thread thread new Thre…...

2024年华为OD机试真题-按身高和体重排队-Python-OD统一考试(C卷)

题目描述: :某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。 输入描述:两个序列,每个序列由n个正整数组成(0 < n …...

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

Ansible+Zabbix-agent2快速实现对多主机监控

ansible Ansible 是一款开源的自动化工具&#xff0c;用于配置管理&#xff08;Configuration Management&#xff09;、应用部署&#xff08;Application Deployment&#xff09;、任务自动化&#xff08;Task Automation&#xff09;和编排&#xff08;Orchestration&#xf…...

浏览器工作原理01 [#]Chrome架构:仅仅打开了1个页面,为什么有4个进程

引用 浏览器工作原理与实践 Chrome打开一个页面需要启动多少进程&#xff1f;你可以点击Chrome浏览器右上角的“选项”菜单&#xff0c;选择“更多工具”子菜单&#xff0c;点击“任务管理器”&#xff0c;这将打开Chrome的任务管理器的窗口&#xff0c;如下图 和Windows任务管…...

Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法

在 MyBatis 中使用 useGeneratedKeys"true" 获取新插入记录的自增 ID 值&#xff0c;可通过以下步骤实现&#xff1a; 1. 配置 Mapper XML 在插入语句的 <insert> 标签中设置&#xff1a; xml 复制 下载 运行 <insert id"insertUser" para…...

Python编码格式化之PEP8编码规范

文章目录 概要PEP8编码风格py文本组织规范命名规范编码风格 PEP8编码检查工具pylintflake8PyCharm中配置检查工具 PEP8编码格式化工具blackautopep8PyCharm配置格式化工具本地git配置hook 总结 概要 在Python项目开发过程中&#xff0c;代码的可读性和一致性对于项目的长期维护…...