Python 进阶(五):os 模块

news2024/9/28 5:28:39

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏:Python 入门核心技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬

文章目录

  • 1. 文件和目录的基本操作
    • 1.1 获取当前工作目录
    • 1.2 更改当前工作目录
    • 1.3 获取目录下所有文件和目录
    • 1.4 创建目录
    • 1.5 删除文件
    • 1.6 删除目录
    • 1.7 递归删除目录
    • 1.8 重命名文件或目录
    • 1.9 获取文件或目录属性
  • 2. 文件和目录的遍历
    • 2.1 遍历目录树
    • 2.2 列出目录下的文件和目录
  • 3. 文件和目录的属性和权限
    • 3.1 获取文件或目录的访问和修改时间
    • 3.2 获取文件或目录的大小
    • 3.3 获取文件或目录的权限
  • 4. 文件和目录的路径操作
    • 4.1 获取文件名和目录名
    • 4.2 拼接路径
    • 4.3 分离路径和扩展名
    • 4.4 判断路径是否存在
    • 4.5 判断路径是否为文件或目录
  • 5. 总结
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

Python 的 os 模块是一个与操作系统交互的模块,它提供了许多函数和方法,可以用于操作文件和目录。本教程将深入介绍 os 模块的各种功能和用法。

1. 文件和目录的基本操作

1.1 获取当前工作目录

os.getcwd() 方法可以获取当前工作目录的路径,即 Python 解释器当前所在的目录。

import os

# 获取当前工作目录
cwd = os.getcwd()
print(cwd)

1.2 更改当前工作目录

os.chdir(path) 方法可以更改当前工作目录的路径。

import os

# 更改当前工作目录
os.chdir('/path/to/new/directory')

1.3 获取目录下所有文件和目录

os.listdir(path) 方法可以获取指定目录下的所有文件和目录的名称列表。

import os

# 获取目录下所有文件和目录
path = '/path/to/directory'
dir_list = os.listdir(path)
print(dir_list)

1.4 创建目录

os.makedirs(path) 方法可以递归创建指定路径的目录,如果目录已经存在,则不会进行任何操作。

import os

# 创建目录
path = '/path/to/new/directory'
os.makedirs(path)

1.5 删除文件

os.remove(path) 方法可以删除指定路径的文件。

import os

# 删除文件
path = '/path/to/file'
os.remove(path)

1.6 删除目录

os.rmdir(path) 方法可以删除指定路径的目录,但前提是该目录必须为空。

import os

# 删除目录
path = '/path/to/empty/directory'
os.rmdir(path)

1.7 递归删除目录

shutil.rmtree(path) 方法可以递归删除指定路径的目录及其所有子目录和文件。

import shutil

# 递归删除目录
path = '/path/to/directory'
shutil.rmtree(path)

1.8 重命名文件或目录

os.rename(src, dst) 方法可以将指定路径的文件或目录重命名为另一个名称或路径。

import os

# 重命名文件或目录
src = '/path/to/old/name'
dst = '/path/to/new/name'
os.rename(src, dst)

1.9 获取文件或目录属性

os.stat(path) 方法可以获取指定路径的文件或目录的属性信息。

import os

# 获取文件或目录属性
path = '/path/to/file_or_directory'
info = os.stat(path)
print(info)

2. 文件和目录的遍历

2.1 遍历目录树

os.walk(top, topdown=True, onerror=None, followlinks=False) 方法可以遍历指定目录下的所有子目录和文件,并返回一个三元组,包含每个子目录路径、该目录下的所有目录名称列表和该目录下的所有文件名称列表。

import os

# 遍历目录树
for root, dirs, files in os.walk('/path/to/directory'):
    print('目录路径:', root)
    print('子目录列表:', dirs)
    print('文件列表:', files)

2.2 列出目录下的文件和目录

os.scandir(path) 方法可以列出指定路径的目录下的所有文件和目录,返回一个迭代器,包含每个文件和目录的详细信息。

import os

# 列出目录下的文件和目录
path = '/path/to/directory'
with os.scandir(path) as entries:
    for entry in entries:
        print(entry.name, entry.is_file(), entry.is_dir())

3. 文件和目录的属性和权限

3.1 获取文件或目录的访问和修改时间

os.path.getatime(path) 方法可以获取指定路径的文件或目录的最后访问时间。

os.path.getmtime(path) 方法可以获取指定路径的文件或目录的最后修改时间。

import os

# 获取文件或目录的访问和修改时间
path = '/path/to/file_or_directory'
atime = os.path.getatime(path)
mtime =os.path.getmtime(path)
print('最后访问时间:', atime)
print('最后修改时间:', mtime)

3.2 获取文件或目录的大小

os.path.getsize(path) 方法可以获取指定路径的文件或目录的大小,单位为字节。

import os

# 获取文件或目录的大小
path = '/path/to/file_or_directory'
size = os.path.getsize(path)
print('大小为:', size, '字节')

3.3 获取文件或目录的权限

os.stat(path) 方法返回的属性信息中包含了文件或目录的权限信息,可以使用 stat 模块的常量来解析这些属性。

import os
import stat

# 获取文件或目录的权限
path = '/path/to/file_or_directory'
mode = os.stat(path).st_mode
print('权限为:', oct(stat.S_IMODE(mode)))

4. 文件和目录的路径操作

4.1 获取文件名和目录名

os.path.basename(path) 方法可以获取指定路径的文件名或目录名。

os.path.dirname(path) 方法可以获取指定路径的目录名或上级目录名。

import os

# 获取文件名和目录名
path = '/path/to/file_or_directory'
filename = os.path.basename(path)
dirname = os.path.dirname(path)
print('文件名为:', filename)
print('目录名为:', dirname)

4.2 拼接路径

os.path.join(path1, path2, ...) 方法可以将多个路径拼接为一个路径。

import os

# 拼接路径
path1 = '/path/to'
path2 = 'file_or_directory'
path = os.path.join(path1, path2)
print('拼接后的路径为:', path)

4.3 分离路径和扩展名

os.path.splitext(path) 方法可以将指定路径的文件名分离为文件名和扩展名。

import os

# 分离路径和扩展名
path = '/path/to/file.txt'
name, ext = os.path.splitext(path)
print('文件名为:', name)
print('扩展名为:', ext)

4.4 判断路径是否存在

os.path.exists(path) 方法可以判断指定路径是否存在。

import os

# 判断路径是否存在
path = '/path/to/file_or_directory'
if os.path.exists(path):
    print('路径存在')
else:
    print('路径不存在')

4.5 判断路径是否为文件或目录

os.path.isfile(path) 方法可以判断指定路径是否为文件。

os.path.isdir(path) 方法可以判断指定路径是否为目录。

import os

# 判断路径是否为文件或目录
path = '/path/to/file_or_directory'
if os.path.isfile(path):
    print('路径为文件')
elif os.path.isdir(path):
    print('路径为目录')
else:
    print('路径不存在')

5. 总结

本教程深入介绍了 Python 的 os 模块的各种功能和用法,包括文件和目录的基本操作、遍历、属性和权限、路径操作等。 os 模块是 Python 编程中非常重要和实用的模块之一,熟练掌握其各种方法和技巧,可以帮助我们更加高效地处理文件和目录相关的任务。


系列文章

🔥 Python 进阶(一):PyCharm 下载、安装和使用
🔥 Python 进阶(二):操作字符串的常用方法
🔥 Python 进阶(三):正则表达式(re 模块)
🔥 Python 进阶(四):日期和时间(time、datetime、calendar 模块)

热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

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

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

相关文章

【Linux进程篇】冯诺依曼体系

【Linux进程篇】冯诺依曼体系 目录 【Linux进程篇】冯诺依曼体系冯诺依曼体系结构(1/3内容 )操作系统(Operator System)概念设计OS的目的定位如何理解“管理”总结系统调用和库函数的概念 作者:爱写代码的刚子 时间:2023.7.28 前言…

EMO:重新思考高效的基于注意力的移动块模型

文章目录 摘要1、介绍2、方法论:归纳法和演绎法2.1、通用效率模型标准2.2、元移动块2.3、微设计:倒置残余移动块2.4、面向密集预测的EMO宏观设计 3、实验3.1、图像分类3.2、下游任务3.3、额外的消融和解释分析 4、相关工作5、结束语及未来工作 摘要 论文链接:https…

【ray】 分布式计算的搭建和调用以及项目实践

目录 0 RAY相关资料1 ray的简要介绍2 ray的搭建3 ray的调用4 实践代码分析4.1 ray的配置4.2 代码中使用ray 0 RAY相关资料 ray 官网:https://docs.ray.io/en/latest/index.html Ray分布式计算框架详解:https://zhuanlan.zhihu.com/p/460600694 b站视频…

OpenLayers入门,地图全图显示经纬度网格标记线

专栏目录: OpenLayers入门教程汇总目录 前言 使用OpenLayers实现地图全图显示经纬度网格标记线。方便查看可视区域所处的经纬度区间。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用…

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备:欧姆龙PLC,捷米特JM-EIP-TCP网关, ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法,支持直连和交叉接…

github Recv failure: Connection reset by peer

Recv failure: Connection reset by peer 背景处理ping一下github网页访问一下github项目git配置git ssh配置再次尝试拉取 疑惑点待研究参考 背景 晚上敲着代码准备提交,执行git pull,报错Recv failure: Connection reset by peer。看着这报错我陷入了沉…

Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

文章目录 EurekaEureka组件可以实现哪些功能什么是CAP原则?服务注册代码实战搭建注册中心服务A搭建服务B搭建启动服务启动注册中心启动服务A启动服务B 结束语 Eureka 这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中&…

QT多线程的示例

想象现在有一个场景,一共有三个线程线程A需要产生1000以内的随机数,线程B需要对这些随机数进行冒泡排序,线程C需要对这些随机数进行快速排序,主线程用来显示线程A的随机数,并且显示线程A和线程B的处理结果,…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

后端通过CorsRegistry对象配置了全局跨域,但是前端仍然报CORS跨域错误

后端通过CorsRegistry配置了全局跨域,但是前端仍然报CORS跨域错误 问题背景 在实现登录功能时,我先是通过CorsRegistry配置了全局跨域,然后配置了一个登录拦截器后前端就报错CORS跨域错误 问题原因 前置知识 首先我们来了解一下什么是跨域错误…

hw技战法整理参考

目录 IP溯源反制 账户安全策略及预警 蜜罐部署联动方案

【42万字,2902页】全网最全《零基础网络安全/黑客自学笔记》,爆肝分享!

这次为大家带来一份零基础也能学会的《全网最全黑客自学笔记》,“全网最全”可不是吹牛的,整个笔记一共42万字,2902页,95个章节。 这份笔记涵盖了网络安全导论、渗透测试基础、网络基础、Linux操作系统基础、web安全等等入门知识…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【SSM】问题集锦(持续更新)

目录 1.错误500:Servlet.init() for servlet DispatcherServlet threw exception Error creating bean with name ‘sqlSessionFactory’ defined in class path reso 主要解决方法可参考这篇文章 我自己的问题是因为spring上下文应用程序关联问题 2.org.apache.c…

带你了解什么是XxxxMapper.xml-SQL 映射文件

文章目录 XxxxMapper.xml-SQL 映射文件官方文档XxxMapper.xml-基本介绍SQL 映射文件常用的几个顶级元素(按照应被定义的顺序列出): XxxMapper.xml-详细说明新建Module xml-mapper代码准备基本使用parameterType(输入参数类型)parameterType(输…

新产品:Stimulsoft Forms 2023.3.1 Crack

Stimulsoft Forms 是一个用于交互式收集和处理用户数据的组件。表单工具可以轻松集成到您的项目或应用程序中,具有直观且用户友好的界面,并允许您创建丰富的表单模板。Stimulsoft Forms 是应用程序中与用户交互的新水平 什么是 Stimulsoft Forms&#xf…

[JAVAee]文件操作-IO

本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出. 建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInputStream读取文件 构造方法 常用方法 Scan…

VLAN原理(Virtual LAN 虚拟局域网)

VLAN(Virtual LAN 虚拟局域网) 1、广播/广播域 2、广播的危害:增加网络/终端负担,传播病毒, 3、如何控制广播?? ​ 控制广播隔离广播域 ​ 路由器物理隔离广播 ​ 路由器隔离广播缺点&…

BLE配对和绑定

参考:一篇文章带你解读蓝牙配对绑定 参考:BLE安全之SM剖析(1) 参考:BLE安全之SM剖析(2) 参考:BLE安全之SM剖析(3) 目录 前言基本概念解读Paring(配对)Bonding(绑定)STK短期秘钥、LTK长期秘钥等 …

通过案例实战详解elasticsearch自定义打分function_score的使用

前言 elasticsearch给我们提供了很强大的搜索功能,但是有时候仅仅只用相关度打分是不够的,所以elasticsearch给我们提供了自定义打分函数function_score,本文结合简单案例详解function_score的使用方法,关于function-score-query…