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

Python os模块

简介

Python的os模块是一个标准库模块,用于提供与操作系统相关的功能(相当于接口)。os模块允许Python程序与文件系统、目录结构、进程管理等操作系统级别的功能进行交互。

主要功能

文件和目录操作

创建、删除、重命名文件和目录;
获取文件和目录的属性信息,如文件大小、权限等;
判断文件或目录是否存在;
遍历文件系统中的目录,列出目录中的文件和子目录。

路径操作

处理文件和目录的路径,包括路径拼接、分割、规范化等。

环境变量操作

获取、设置、删除系统环境变量。

进程管理

启动新的进程。
获取当前进程的信息,如进程ID。

系统信息

获取操作系统的信息,如操作系统类型、版本等。

权限控制

修改文件和目录的权限。

文件系统操作

改变当前工作目录;
创建符号链接(软链接)等。

基本操作

文件和目录

os.remove(path) 或 os.unlink(path) :删除指定路径的文件
os.removedirs:删除文件,并删除中间路径中的空文件夹
os.chdir(path):将当前工作目录改变为指定的路径
os.getcwd():返回当前的工作目录
os.curdir:表示当前目录的符号
os.rename(old, new):重命名文件
os.renames(old, new):重命名文件,如果中间路径的文件夹不存在,则创建文件夹
os.listdir(path):返回给定目录下的所有文件夹和文件名,不包括 ‘.’ 和 ‘…’ 以及子文件夹下的目录(‘.’ 和 ‘…’ 分别指当前目录和父目录)
os.mkdir(name):产生新文件夹
os.makedirs(name):产生新文件夹,如果中间路径的文件夹不存在,则创建文件夹

import os# 删除指定路径的文件
os.remove("file.txt")# 删除文件,并删除中间路径中的空文件夹
os.removedirs("path/to/empty/folder")# 将当前工作目录改变为指定的路径
os.chdir("/new/directory/path")# 返回当前的工作目录
current_dir = os.getcwd()
print("Current Working Directory:", current_dir)# 重命名文件
os.rename("old_name.txt", "new_name.txt")# 重命名文件,如果中间路径的文件夹不存在,则创建文件夹
os.renames("old_name.txt", "new_name.txt")# 返回给定目录下的所有文件夹和文件名
file_list = os.listdir("/path/to/directory")
print("Files and Folders in Directory:", file_list)# 产生新文件夹
os.mkdir("/path/to/new_folder")# 产生新文件夹,如果中间路径的文件夹不存在,则创建文件夹
os.makedirs("/path/to/new_folder/subfolder")

文件路径

os.path.exists(path):检查路径是否存在
os.path.isabs(path):检查路径是否是绝对路径
os.path.isdir(path):检查路径是否为目录
os.path.isfile(path):检查路径是否为文件
os.path.islink(path):检查路径是否为符号链接(软链接)
os.path.samefile(path1, path2):检查两个路径是否指向同一个文件
os.path.join():拼接多个路径组件
os.path.split(path):分割路径为目录和文件名部分
os.path.abspath(path):规范化路径,返回绝对路径

import ospath = '/path/to/some/file.txt'# 检查路径是否存在
print(os.path.exists(path))# 检查路径是否为绝对路径
print(os.path.isabs(path))# 检查路径是否为目录
print(os.path.isdir(path))# 检查路径是否为文件
print(os.path.isfile(path))# 检查路径是否为符号链接
print(os.path.islink(path))# 检查两个路径是否指向同一个文件
path1 = '/path/to/file1.txt'
path2 = '/path/to/file2.txt'
print(os.path.samefile(path1, path2))# 拼接多个路径组件
dir_path = '/path/to/some'
file_name = 'file.txt'
full_path = os.path.join(dir_path, file_name)
print(full_path)# 分割路径为目录和文件名部分
dir_name, base_name = os.path.split(path)
print("Directory:", dir_name)
print("File Name:", base_name)# 规范化路径,返回绝对路径
normalized_path = os.path.abspath('../relative/path')
print("Normalized Path:", normalized_path)

环境变量

os.environ.get(key):获取指定环境变量的值
os.environ[key] = value:设置环境变量的值
del os.environ[key]:删除环境变量
os.environ:包含当前环境变量的字典

import os# 获取指定环境变量的值
value = os.environ.get('PATH')
print("PATH environment variable:", value)# 设置环境变量的值
os.environ['MY_VARIABLE'] = 'my_value'# 删除环境变量
del os.environ['MY_VARIABLE']# 获取所有环境变量
all_env_variables = os.environ
print("All Environment Variables:", all_env_variables)

进程管理

os.system(command):在命令行中执行系统命令
os.spawn*():用于创建新进程
os.getpid():获取当前进程的ID
os.waitpid(pid, options):等待指定进程的状态

import os# 在命令行中执行系统命令
os.system('ls -l')# 创建新进程(示例为Linux下的命令,Windows下请使用不同的命令)
os.spawnlp(os.P_NOWAIT, '/bin/ls', 'ls', '-l')# 获取当前进程的ID
pid = os.getpid()
print("Current Process ID:", pid)# 等待指定进程的状态
pid_to_wait = 12345
options = os.WEXITED  # 等待进程正常退出
pid, status = os.waitpid(pid_to_wait, options)
print("Process ID waited:", pid)
print("Exit Status:", status)

权限控制

os.chmod(path, mode):修改文件或目录的权限模式

import os# 修改文件或目录的权限模式
path = '/path/to/some/file.txt'
os.chmod(path, 0o755)  # 设置文件权限为755(-rwxr-xr-x)

系统信息

os.name:获取操作系统名称
os.uname():获取操作系统的详细信息(Linux特有)

import os# 获取操作系统名称
os_name = os.name
print("Operating System Name:", os_name)# 获取操作系统的详细信息(Linux特有)
if os_name == 'posix':os_info = os.uname()print("Operating System Info:", os_info)

总结

Python的os模块在实际开发中还是挺有用的,可以用它来创建、删除、重命名文件和目录,处理复杂的文件路径,读取和修改环境变量,以及管理和控制进程。这期先写到这里,下期还没想好复习啥,期待一下哈哈哈哈…

相关文章:

Python os模块

简介 Python的os模块是一个标准库模块,用于提供与操作系统相关的功能(相当于接口)。os模块允许Python程序与文件系统、目录结构、进程管理等操作系统级别的功能进行交互。 主要功能 文件和目录操作 创建、删除、重命名文件和目录&#xf…...

Elasticsearch:2023 年 Lucene 领域发生了什么?

作者:来自 Elastic Adrien Grand 2023 年刚刚结束,又是 Apache Lucene 开发活跃的一年。 让我们花点时间回顾一下去年的亮点。 社区 2023 年,有: 5 个次要版本(9.5、9.6、9.7、9.8 和 9.9),1 …...

Java算法 leetcode简单刷题记录4

Java算法 leetcode简单刷题记录4 买卖股票的最佳时机: https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 笨办法: 记录当天的值及之后的最大值,相减得到利润; 所有的天都计算下,比较得到利润最大值&…...

opencv#27模板匹配

图像模板匹配原理 例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。 我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,…...

【论文阅读笔记】Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation

1.介绍 Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation Swin-Unet:用于医学图像分割的类Unet纯Transformer 2022年发表在 Computer Vision – ECCV 2022 Workshops Paper Code 2.摘要 在过去的几年里,卷积神经网络&#xff…...

IS-IS:01 ISIS基本配置

这是实验拓扑,下面是基本配置: R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …...

基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测

目录 背影 极限学习机 基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测的MATLAB代码资源-CSDN…...

miniconda安装

Miniconda是一个小型版的Anaconda,它包含了一个包管理工具conda和Python。Miniconda适用于那些只需要管理Python包和环境,而不需要Anaconda中包含的大部分科学计算工具的用户。 Miniconda的安装过程相对简单。你可以从清华大学开源软件镜像站下载Minico…...

PHP判断访客是否手机端(移动端浏览器)访问的方法总结

PHP判断访客是否手机端、移动端、浏览器访问的方法总结 方法一:使用$_SERVER全局变量方法二:使用PHP的get_browser函数方法三:使用第三方库(Mobile Detect)方法四:使用WURFL设备数据库 方法一:使…...

vscode无法自动补全

前提:安装c/c插件 c/c插件功能非常强大,几乎能满足日常编码过程中常用的功能;因此也包含自动补全的功能,开启方法如下: 文件->首选项->设置: 扩展->c/c->Intellisense,找到Intell…...

深度学习记录--指数加权平均

指数加权移动平均(exponentially weighted moving averages) 如何对杂乱的数据进行拟合? 通过指数加权平均可以把数据图近似拟合成一条曲线 公式: 其中表示第t个平均数,表示第t-1个平均数,表示第t个数据,表示变化参数…...

如何生成图源二维码?

数据是GIS的血液。 自从苹果端与安卓端水经微图APP(简称“微图APP”)上线之后,有用户反馈图源比较少的问题。 其实,微图APP支持通过图源二维码添加自定义图源,而该二维码则可以通过微图Web版生成。 如何生成图源二维…...

PowerShell install 一键部署grafana

grafana 前言 Grafana 是一款开源的数据可视化和监控仪表盘工具。它提供了丰富的数据查询、可视化和报警功能,可用于实时监控、数据分析和故障排除等领域。 通过 Grafana,您可以连接到各种不同的数据源,包括时序数据库(如 Prometheus、InfluxDB)和关系型数据库(如 MySQ…...

笨蛋学设计模式行为型模式-解释器模式【23】

行为型模式-解释器模式 8.10解释器模式8.10.1概念8.10.2场景8.10.3优势 / 劣势8.10.4解释器模式可分为8.10.5解释器模式8.10.6实战8.10.6.1题目描述8.10.6.2输入描述8.10.6.3输出描述8.10.6.4代码 8.10.7总结 8.10解释器模式 8.10.1概念 ​ 解释器模式用于定义一个语言的文法…...

SAP ABAP SUBMIT常用用法

导语:一直对SUBMIT的用法模模糊糊,每次用都要去查询,本次痛下决心,腾出时间,梳理了一下,如果本文对你有帮助,点个赞再走~ 之前分享过SUBMIT调用程序获取内表的值,就不重…...

GitLab备份与恢复测试(基于Docker)

GitLab环境准备 docker run --name gitlab \ -p 2022:22 -p 2080:80 -p 2443:443 -d \ -v /opt/gitlab/config:/etc/gitlab \ -v /opt/gitlab/gitlab/logs:/var/log/gitlab \ -v /opt/gitlab/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:16.2.1-ce.0备份 1.修改配置文件…...

android studio开发的一些问题

1、编译后,输出日志乱码 Help-->Edit Custom VM Options...-->-Dfile.encodingUTF-8 2、编译时,出现:connect timed out 试过很多方法啦,都是不行的。最后我自己摸索出方法。 [1]android studio-->Project-->Grad…...

辞职对于我来说,不可避免(10)

人,从有辞职的想法,再到把辞职出口要多久,一天、一星期还是一个月 “别以为我不知道你搞了什么小动作,以后别瞎搞,不然我不客气”,从老板说出来这句话开始,这家公司我注定不可能再待下去。 我很诧异,小蔡刚离职,公司干活的技术就我一个,况且我也没哪里得罪你,你冒出…...

【Java】--网络编程:基于TCP协议的网络通信

【Java】–网络编程:基于TCP协议的网络通信 文章目录 【Java】--网络编程:基于TCP协议的网络通信一、TCP协议1.1 概念1.2 三次握手1.2.1 文字描述1.2.2 画图演示 1.3 四次挥手1.3.1 文字描述1.3.2 画图演示 二、基于TCP的Socket网络编程2.1 概念2.2 服务…...

CMake+QT+大漠插件的桌面应用开发(QThread)

文章目录 CMakeQT大漠插件的桌面应用开发(QThread)简介环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发(QThread) 简介 在CMakeQT大漠插件的桌面应用开发中已经给出了QT配合大漠插件开发桌面应用的样例 不过由于主…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...