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

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...