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程序与文件系统、目录结构、进程管理等操作系统级别的功能进行交互。 主要功能 文件和目录操作 创建、删除、重命名文件和目录…...
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.摘要 在过去的几年里,卷积神经网络ÿ…...
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配合大漠插件开发桌面应用的样例 不过由于主…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
【大厂机试题解法笔记】矩阵匹配
题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...
