Python OS模块常用方法整理

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模块常用的操作方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中动态合批

文章目录 前言一、动态合批的规则1、材质相同是合批的前提&#xff0c;但是如果是材质实例的话&#xff0c;则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader&#xff0c;来测试动态合批1、我们选择模型的 Mesh…

二叉树进阶经典笔试题_1

1. 二叉树创建字符串 题目链接&#xff1a;606. 根据二叉树创建字符串 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构…

C语言分支结构程序之if语句(1)

目录 if语句其一 奇数的判定 if语句其二 对奇数偶数的判断 if语句的结构图 专题 语法结构 结构图的阅读方法 结构图示例 相等运算符 关系运算符 嵌套的if语句 if语句其一 大家的一天都会怎么度过呢&#xff1f;我想应该不会是被设计好的程序那样循规蹈矩&#xff0c;我们…

字符集——带你了解UTF-8的前世今生

文章目录 字符集的来历汉字和字母的编码特点Unicode字符集字符集小结编码和解码开发约定 字符集的来历 计算机是美国人发明的&#xff0c;由于计算机能够处理的数据只能是0和1组成的二进制数据&#xff0c;为了让计算机能够处理字符&#xff0c;于是美国人就把他们会用到的每一…

关于 Kubernetes中Admission Controllers(准入控制器) 认知的一些笔记

写在前面 工作中遇到&#xff0c;简单整理记忆博文为官方文档整理涉及内置准入控制的分类理解理解不足小伙伴帮忙指正 人活着就是为了忍受摧残&#xff0c;一直到死&#xff0c;想明了这一点&#xff0c;一切事情都能泰然处之 —— 王小波《黄金时代》 为什么需要准入控制器 准…

【Qt开发流程】之对象模型2:属性系统

描述 Qt提供了一个复杂的属性系统&#xff0c;类似于一些编译器供应商提供的属性系统。然而&#xff0c;作为一个独立于编译器和平台的库&#xff0c;Qt不依赖于非标准的编译器特性&#xff0c;如__property或[property]。 Qt解决方案适用于Qt支持的所有平台上的任何标准c编译…

高性能网络编程 - 白话TCP 三次握手过程

文章目录 概述TCP协议头的格式TCP Finite State Machine (FSM) 状态机三次握手如何在 Linux 系统中查看 TCP 状态 概述 每一个抽象层建立在低一层提供的服务上&#xff0c;并且为高一层提供服务。 我们需要知道 TCP在网络OSI的七层模型中的第四层——Transport层 -----------…

百度智能云正式上线Python SDK版本并全面开源

文章目录 前言一、SDK的优势二、千帆SDK&#xff1a;快速落地LLM应用三、如何快速上手千帆SDK3.1、SDK快速启动3.2. SDK进阶指引 3.3. 通过Langchain接入千帆SDK4、开源社区 前言 百度智能云千帆大模型平台再次升级&#xff01;在原有API基础上&#xff0c;百度智能云正式上线…

MicroPython标准库

MicroPython标准库 arraybinascii(二进制/ASCII转换)builtins – 内置函数和异常cmath – 复数的数学函数collections – 集合和容器类型errno – 系统错误代码gc – 控制垃圾收集器hashlib – 散列算法heapq – 堆队列算法io – 输入/输出流json – JSON 编码和解码math – 数…

周周爱学习之Redis重点总结

redis重点总结 在正常的业务流程中&#xff0c;用户发送请求&#xff0c;然后到缓存中查询数据。如果缓存中不存在数据的话&#xff0c;就会去数据库查询数据。数据库中有的话&#xff0c;就会更新缓存然后返回数据&#xff0c;数据库中也没有的话就会给用户返回一个空。 1.缓…

【6】PyQt信号和槽

1. 信号和槽简介 信号和槽机制是 QT 的核心机制&#xff0c;应用于对象之间的通信 信号和槽是用来在对象间传递数据的方法当一个特定事件发生的时候&#xff0c;signal会被emit出来&#xff0c;slot调用是用来响应相应的signal的Qt中对象已经包含了许多预定义的 signal&#…

全网最新最全的Appium自动化:使用appium后安卓手机无法调出键盘解决方法

问题&#xff1a;用appium进行真机调试后&#xff0c;使用手机的app进行输入时无法调出键盘。 原因&#xff1a;appium调试时&#xff0c;将手机输入法设置成了Unicode IME 注&#xff1a;按键详细操作参考&#xff1a;转载至 作者&#xff1a;oscarforever 地址&#xff1…

Java链接数据库

本文介绍的是Java链接数据库中的JDBC操作&#xff0c;JDBC虽然现在用的不多&#xff0c;但面试的时候会问道。需要有相应的了解。下面以链接MySQL为例子。 JDBC 什么jdbc Java DataBase Connectivity是一种用于执行SQL语句的Java API&#xff0c;它由一组用Java语言编写的类和…

制作一个RISC-V的操作系统五-RISC-V汇编语言编程一

文章目录 RISC-V汇编语言入门汇编语言概念简介 汇编语言语法介绍&#xff08;GNU版本&#xff09; RISC-V汇编语言入门 汇编语言概念简介 高级&#xff1a;可以理解就是更贴近人的理解 低级&#xff1a;可以理解就是更贴近机器的 难移植&#xff1a;汇编指令基本上和机器指令…

对标Gen-2!Meta发布新模型,进军文生视频赛道

随着扩散模型的飞速发展&#xff0c;诞生了Midjourney、DALLE 3、Stable Difusion等一大批出色的文生图模型。但在文生视频领域却进步缓慢&#xff0c;因为文生视频多数采用逐帧生成的方式,这类自回归方法运算效率低下、成本高。 即便使用先生成关键帧,再生成中间帧新方法。如…

网络模拟与网络仿真

目录 一、概念界定 二、模拟&#xff08;simulation&#xff09;与仿真&#xff08;emulation&#xff09; 2.1 模拟&#xff08;simulation&#xff09; 2.2 仿真&#xff08;emulation&#xff09; 2.3 区分 三、网络模拟与网络仿真 3.1 网络模拟 3.2 网络仿真 3.…

软件测试要学习的基础知识——黑盒测试

黑盒测试概述 黑盒测试也叫功能测试&#xff0c;通过测试来检测每个功能是否都能正常使用。在测试中&#xff0c;把程序看作是一个不能打开的黑盒子&#xff0c;在完全不考虑程序内部结构和内部特性的情况下&#xff0c;对程序接口进行测试&#xff0c;只检查程序功能是否按照…

解析 Smilee Finance:基于无偿损失的链上期权方案

“有了 Smilee Finance&#xff0c;无偿损失或许不再是一种损失&#xff0c;它也更可能是一种可组合性的收益” 无偿损失 流动性挖矿是引燃 DeFi Summer 的导火索&#xff0c;在 AMM DEX 中&#xff0c;它允许用户将资产按照比例添加到 AMM 流动性池中成为 LP&#xff0c;以为交…

POJ 3233 Matrix Power Series 动态规划(矩阵的幂)

一、题目大意 给出一个矩阵A&#xff0c; 输出矩阵B的每一项对M取余数的值。 二、解题思路 以二维矩阵为例&#xff0c;首先计算K2的情况&#xff0c;我们设结果矩阵为B 有如下表达式 那么不难看出&#xff0c;需要的矩阵其实就是以下的两个矩阵相乘后的左上角的N*N个 然后…

RoPE旋转位置编码浅析

RoPE旋转位置编码浅析 本文介绍了旋转位置编码RoPE在大模型中的广泛应用,包括Llama、Mistral 7B、Baichuan、ChatGLM、Qwen、…等。由于计算资源限制,大模型通常在较小的上下文长度中进行训练,导致在推理超出预训练长度时性能显著下降。为了解决这个问题,涌现了许多基于Ro…