当前位置: 首页 > 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配合大漠插件开发桌面应用的样例 不过由于主…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...

CTF show 数学不及格

拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 ​ 根据题目…...