Python OS模块常用方法整理

news2025/1/12 6:13:34

os模块包含了普遍的操作系统和文件目录方法

引入类库

首先需要引入类库

import os

常用方法

OS模块方法

获取操作系统类型

nt->window:Microsoft Windows NT

posix->Linux/Mac OS: Portable Operating System Interface of UNIX(可移植操作系统接口)

示例如下:

print(os.name) # nt

获取系统环境变量
所有环境变量

示例如下:

print(os.environ)

 

指定环境变量

示例如下:

print(os.environ.get('APPDATA'))

# C:\Users\18201\AppData\Roaming

获取当前目录

示例如下:

print(os.curdir)

# 执行结果:.

获取当前工作目录

即当前python脚本所在目录

示例如下:

print(os.getcwd())

# 执行结果: E:\lianxipy\day3

获取目录所有文件

使用os的listdir方法,返回指定目录下所有的文件(以列表的形式)。

示例如下:

print(os.listdir(r'E:\lianxipy\day3'))

# 执行结果
# ['os整理.py', '元组.py', '字典.py', '字符串.py', '异常处理.py', '文件持久操作.py', '文件读写.py','装饰器.py', '迭代器.py', '集合.py']

创建目录

在当前目录下创建新目录

绝对路径

示例如下:

os.mkdir(r'E:\lianxipy\day3\new')

 

相对路径

示例如下:

os.mkdir('new2')

注意:

目录如果已存在,就会抛出异常

Traceback (most recent call last):
  File "E:\lianxipy\day3\os整理.py", line 38, in <module>
    os.mkdir(r'E:\lianxipy\day3\new')
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'E:\\lianxipy\\day3\\new'

 

执行结果

删除目录

删除目录使用刚才创建的new和new2目录为例。

示例如下:

os.rmdir(r'E:\lianxipy\day3\new')
os.rmdir('new2') # ./new2 or new2都可以

 

获取文件属性

示例如下:

print(os.stat('os整理.py'))

执行结果:

os.stat_result(st_mode=33206, st_ino=1970324837013767, st_dev=3365708600, st_nlink=1, st_uid=0, st_gid=0, st_size=1208, st_atime=1701744932, st_mtime=1701744932, st_ctime=1701740791)

说明:

st_mode: inode 保护模式

st_ino: inode 节点号。

st_dev: inode 驻留的设备。

st_nlink: inode 的链接数。

st_uid: 所有者的用户ID。

st_gid: 所有者的组ID。

st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。

st_atime: 上次访问的时间。

st_mtime: 最后一次修改的时间。

st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

重命名
对目录重命名

需要传入两个路径+名称,分别为路径目录与新路径目录。

示例如下:

os.rename('new', 'new1')

 

对文件重命名

这里也是传入两个路径名称,需要注意的是路径要携带文件扩展名,否则就修改文件格式,会导致无法识别文件。

示例如下:

os.rename('函数1.py', '函数.py')

删除普通文件

删除文件需要使用os的remove方法,传入一个绝对路径或相对路径的文件即可删除。在当前目录下创建一个new.txt用于测试删除。

示例如下:

os.remove('new.txt')

如果存在就会被删除,如果不存在就会抛出异常:

Traceback (most recent call last):
  File "E:\lianxipy\day3\os整理.py", line 59, in <module>
    os.remove('new.txt')
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'new.txt'

运行shell命令

Shell命令就是指使用cmd.exe打开的小黑窗口执行的命令。使用shell命令需要谨慎,否则易引发安全问题。

示例如下:

# 设置脚本文件编码为utf-8
os.system("CHCP 65001")
# 查看本地配置
os.system("ipconfig")
# 查看文件目录树结构
os.system("tree")
# 打开远程桌面
os.system("mstsc")

OS path模块方法

查看当前绝对路径

示例如下:

print(os.path.abspath('./os整理.py'))

# 执行结果
# E:\lianxipy\day3\os整理.py

拼接路径

注意:参数2中开始不能是斜杠,否则会覆盖掉参数1除根外的其他路径

示例如下:

path1 = "E:\lianxipy\day3"
path2 = "text\\new1\\new2"
print(os.path.join(path1, path2))

# 执行结果
# E:\lianxipy\day3\text\new1\new2

拆分路径

从路径中拆出最后一个目录

示例如下:

path3 = r"E:\lianxipy\day3\text\new1\new2"
print(os.path.split(path3))

# 执行结果
# ('E:\\lianxipy\\day3\\text\\new1', 'new2')

 

获取扩展名

获取文件的扩展名(带.)

示例如下:

print(os.path.splitext(r"E:\lianxipy\day3\os整理.py"))
# 若没有扩展名
print(os.path.splitext(r"E:\lianxipy\day3\os整理"))

# 执行结果
# ('E:\\lianxipy\\day3\\os整理', '.py')
# ('E:\\lianxipy\\day3\\os整理', '')

判断目录

判断目录参数为绝对路径返回布尔值,存在即为True。

示例如下:

print(os.path.isdir(r"E:\lianxipy\day3\os整理.py")) # False
print(os.path.isdir(r"E:\lianxipy\day3")) # True

判断文件是否存在

示例如下:

print(os.path.isfile(r"E:\lianxipy\day3\os整理.py")) # True
print(os.path.isfile(r"E:\lianxipy\day3\os整理1.py"))# False

判断路径是否存在

可用来判断绝对路径的目录

示例如下:

print(os.path.exists(r"E:\lianxipy\day3")) # True

也可以用来判断文件

print(os.path.exists(r"E:\lianxipy\day3\os整理.py")) # True

获取文件的大小

获取文件和目录大小单位kb

示例如下:

print(os.path.getsize(r"E:\lianxipy\day3\os整理.py")) # 3457

也可以使用获取目录大小 判断是否空文件夹

print(os.path.getsize(r"E:\lianxipy\day3\new")) # 0

文件的目录获取

dirname 函数用于返回文件路径,也就是返回 path 参数中最后一个斜杠之前的所有内容。

basename函数用于去掉目录路径,单独返回文件名。

示例如下:

path = r"E:\lianxipy\day3\os整理.py"
print(os.path.dirname(path))
print(os.path.basename(path))

# 执行结果
# E:\lianxipy\day3
# os整理.py

总结

本篇主要整理了一些os模块常用的操作方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1288300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

小航助学题库白名单竞赛考级蓝桥杯等考scratch(12级)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;

Java面试题(每天10题)-------连载(44)

目录 Dubbo篇 1、Dubbo支持哪些协议&#xff0c;每种协议的应用场景&#xff0c;优缺点 2、Dubbo超时时间怎么设置&#xff1f; 3、Dubbo有哪些注册中心&#xff1f; 4、Dubbo集群的负载均衡有哪些策略 5、Dubbo是什么&#xff1f; 6、Dubbo的主要应用场景&#xff1f;…

豪华股东背书:欧洲AI新星Mistral估值飙升至20亿美元

在人工智能领域&#xff0c;一家名为Mistral的初创公司近期引起了广泛关注。这家仅成立不到一年的公司&#xff0c;凭借其强大的技术实力和豪华的股东背景&#xff0c;已经成功吸引了包括A16z、英伟达、Salesforce等在内的多家全球顶级投资机构的关注。据知情人士透露&#xff…

基于阿里云服务网格流量泳道的全链路流量管理(一):严格模式流量泳道

作者&#xff1a;尹航 概述 灰度发布是一种常见的对新版本应用服务的发布手段&#xff0c;其特点在于能够将流量在服务的稳定版本和灰度版本之间时刻切换&#xff0c;以帮助我们用更加可靠的方式实现服务的升级。在流量比例切换的过程中&#xff0c;我们可以逐步验证新版本服…

TCP显式编码报文长度发送与接收

报文格式最重要的是如何确定报文的边界。常见的报文格式有两种方法&#xff0c;一种是发送端把要发送的报文长度预先通过报文告知给接收端&#xff1b;另一种是通过一些特殊的字符来进行边界的划分。 这篇文章中讲的是发送报文长度的方法。报文类型如下&#xff1a; 第一部分…

MySQL主从复制(一主一从、双主双从)

一、概述 1. 数据库主从概念、优点、用途 主从数据库是什么意思呢&#xff0c;主是主库的意思&#xff0c;从是从库的意思。数据库主库对外提供读写的操作&#xff0c;从库对外提供读的操作。   数据库为什么需要主从架构呢&#xff1f; 高可用&#xff0c;实时灾备&#x…

QT 中 多线程(备查)

基础 一个线程处理窗口事件&#xff0c;其他线程进行逻辑运算 在QT中使用多线程&#xff0c;需要额外注意的&#xff1a; 1&#xff09;默认的线程在Qt中称之为窗口线程&#xff0c;也叫主线程&#xff0c;负责窗口事件处理或者窗口控件数据的更新 2&#xff09;子线程负责后台…

TA-Lib学习研究笔记(九)——Pattern Recognition (1)

TA-Lib学习研究笔记&#xff08;九&#xff09;——Pattern Recognition &#xff08;1&#xff09; 0.程序代码 形态识别的函数的应用&#xff0c;通过使用A股实际的数据&#xff0c;验证形态识别函数&#xff0c;用K线显示出现标志的形态走势&#xff0c;由于入口参数基本上…

面试 Redis 八股文十问十答第一期

面试 Redis 八股文十问十答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.Redis数据类型有哪些? String&#xff08;字符串&#xff09;&#xff1a;是…

安装npm,配置国内源

下载地址 https://nodejs.cn/download/ 设置国内源 npm config set registry https://registry.npm.taobao.org --global npm config get registry

初学Python基础后,如何制定学习计划?

如果你是Python小白&#xff0c;学完基础语法是个了不起的成就&#xff0c;但是接下来应该干嘛呢&#xff1f;你应该学习哪些内容&#xff1f;你应该如何规划你的Python学习路线&#xff1f; 其实这些问题的答案都取决于你的个人目标和兴趣。你想要用Python做什么&#xff1f;…

微服务实战系列之J2Cache

前言 经过近几天陆续发布Cache系列博文&#xff0c;博主已对业界主流的缓存工具进行了基本介绍&#xff0c;当然也提到了一些基本技巧。相信各位盆友看见这么多Cache工具后&#xff0c;在选型上一定存在某些偏爱: A同学说&#xff1a;不管业务千变万化&#xff0c;我对Redis的…

HarmonyOS学习--TypeScript语言学习(一)

本章目录如下&#xff1a; 一、TypeScript语言介绍 二、TypeScript使用工具 三、TypeScript基础知识 四、TypeScript 与面向对象 五、TypeScript 保留关键字 为什么要学习TypeScript语言呢&#xff1f; 因为ArkTS语言是围绕应用开发在TypeScript&#xff08;简称TS&#xff…

STM32(PWM、ADC)

1、PWM 定义 PWM&#xff0c;全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;它通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 PWM&#xff0c;全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff…

STM32(DMA、DHT11)

1、DMA&#xff08;数据的搬运工&#xff09; DMA&#xff0c;全称为&#xff1a;Direct Memory Access&#xff0c;即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场的过程&#xff0c;通过硬件为 RAM 与 I/O 设备开…

基于Python+OpenCV的车道线和车辆检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 本文将介绍如何使用Python编程语言结合OpenCV库进行车道线和车辆检测。这种技术常用于计算机视觉领域&#xff0c;特…

优秀编程习惯一: Git提交如何写注释

feat feat - A new feature : 一个新功能 fix fix - A bug fix : bug修复 docs docs - Documentation only changes : 仅更改文档 style style - Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) : 不影响代…

arduino - L7805CV三端稳压器

一、 介绍&#xff08;摘抄&#xff09; L7805CV是三端稳压器&#xff0c;78是正电压稳压&#xff0c;和它对应的79就是负电压&#xff0c;稳压05是传输电压的数值&#xff0c;所以它的意思就是正5伏的三端稳压器&#xff0c;通常可以直接代换&#xff0c;就是说它的输出电压在…

Pycharm的字体缩放设置

法1 法2 放大操作 increase 缩小操作 decrease 保存操作&#xff0c;点击OK结束