Python 进阶(五):os 模块

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏: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.mzph.cn/news/14315.shtml

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

相关文章

ffmpeg批量分割视频解决视频前几秒黑屏的问题解决

echo 请输入视频地址: set /p fp echo 请输入开始时间: set /p st echo 请输入结束时间: set /p et echo 请输入分片时间: set /p sgt echo 注意:循环范围参数要空格。 for /l %%i in (%st%, %sgt%, %et%) do call :aa…

redis启动失败,oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

在redis文件夹下,启动redis正常。 但是加入到system后启动redis失败。 一直处于starting状态。 对比正常redis服务的配置之后,把redis.conf里的守护进程关掉就可以了(但是没用system管理之前,直接./redis.server启动是可以的&…

35.图片幻灯片

图片幻灯片 html部分 <div class"carousel"><div class"image-container"><img src"./static/20180529205331_yhGyf.jpeg" alt"" srcset""><img src"./static/20190214214253_hsjqw.webp"…

Java 模块化Modularity- 了解与测试

1. java9后JDK后目录的变化 不见了jre,新增了jmods目录。 1&#xff09;为什么不见了jre&#xff1f; 新版JDK提供了 jlink工具&#xff0c;使用它构建一个包含jre镜像的应用程序。 就是可以打包一个引用程序内部已经包含完整或部分jre&#xff0c;可以直接运行。 2&#xf…

MP的开发流程

MP的开发流程 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【李宏毅 DLHLP 深度学习人类语言处理 HW1】

李宏毅 DLHLP 深度学习人类语言处理 HW1 相关资料HW1更多尝试1, 加深encoder:4层LSTM2, 加深encoder(4层LSTM)和加深decoder(2层LSTM)3, cnn代替vgg4, 再次加深decoder(4层LSTM) 语音小白在网上没有找到这门课的作业分享&#xff0c;那就记录一下自己的作业吧。 相关资料 课程…

基于SpringBoot+Vue的学习平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

tinkerCAD案例:23.Tinkercad 中的自定义字体

tinkerCAD案例&#xff1a;23.Tinkercad 中的自定义字体 原文 Tinkercad Projects Tinkercad has a fun shape in the Shape Generators section that allows you to upload your own font in SVG format and use it in your designs. I’ve used it for a variety of desi…

Blazor前后端框架Known-V1.2.8

V1.2.8 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazor…

Linked List

文章目录 链表定义专业术语代码链表分类常见算法链表创建和常用算法 链表总结 链表 补充知识 typedef 给类型换名字&#xff0c;比如 typedef struct Student {int sid;char name[100];char sex; }ST;//ST就代表了struct Student //即这上方一大坨都可以用ST表示 //原先结构体…

Springer独立出版 | 2023年触觉与虚拟现实国际会议(ICHVR 2023)

会议简介 Brief Introduction 2023年触觉与虚拟现实国际会议(ICHVR 2023) 会议时间&#xff1a;2023年12月15日-17日 召开地点&#xff1a;中国北海 大会官网&#xff1a;www.ichvr.org 2023年触觉与虚拟现实国际会议(ICHVR 2023)由东南大学、上海交通大学联合主办&#xff1b;…

PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3&#xff1a;数据类型比较、大小限制和性能扩展PHP使用Re…

ajax概述

目录 1.什么是ajax 2.ja原生ajax 3.jQuery框架的ajax 4.综合案例 1.什么是ajax Ajax 即"Asynchronous Javascript And XML"&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。Ajax 异步 JavaScript 和 XML&…

多线程(JavaEE初阶系列5)

目录 前言&#xff1a; 1.什么是定时器 2.标准库中的定时器及使用 3.实现定时器 结束语&#xff1a; 前言&#xff1a; 在上一节中小编给大家介绍了多线程中的两个设计模式&#xff0c;单例模式和阻塞式队列模式&#xff0c;在单例模式中又有两种实现方式一种是懒汉模式&a…

初识TDMQ

目录 一&#xff1a;需求背景二&#xff1a;相关文档三&#xff1a;验证TDMQ广播消息 一&#xff1a;需求背景 目前公司需要将决策引擎处理的结果&#xff0c; 一部分数据交给下游分析/入黑/通知等功能。因此就需要决策引擎生产结果让多方下游去消费。 而我需要实现下游的一部…

STM32使用HAL库BH1750光照度传感器

开发环境 单片机&#xff1a;STM32F103C8T6 光照度传感器&#xff1a;BH1750 IDE&#xff1a;KEILSTM32CUBEMX 单片机配置 1、STM32CUBEMX BH1750代码 1、头文件 /* ************************************************* BH1750光照数据计算&#xff08;LUX&#xff09; …

Shell脚本实现分库分表操作

目录 一&#xff0c;分库备份 二&#xff0c;分库操作 三&#xff0c;分库分表备份 四&#xff0c;备份还原 一&#xff0c;分库备份 #!/bin/bash mysql_cmd-uroot -pzly666666 bak_path/backup/db [ -d ${bak_path} ] || mkdir -p ${bak_path}mysql ${mysql_cmd} -e show…

解决Django报错 : No module named ‘MySQLdb‘

Django的版本是2.0&#xff0c;Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令&#xff1a;python manage.py makemigrations 进行迁移&#xff0c;但是突然报错&#xff1a;ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…

Linux - PostgreSQL 适用于9.x 以上的 tar.gz 源码安装与理解 - 报错集锦

这里写目录标题 序言主要内容bash 配置文件个人理解关于初始化 PostgreSQL 数据库的理解 启动方法检查服务器是否在PostgreSQL中运行关闭 postgresql 数据库方法参考链接 序言 PostgreSQL 9.x 以下版本笔者没用过&#xff0c;具体操作看参考链接&#xff0c;笔者就不记录重复操…

回答网友 修改一个exe

网友说&#xff1a;他有个很多年前的没有源码的exe&#xff0c;在win10上没法用&#xff0c;让俺看一下。 俺看了一下&#xff0c;发现是窗体设计的背景色的问题。这个程序的背景色用的是clInactiveCaptionText。clInactiveCaptionText 在win10之前的系统上是灰色&#xff0c;但…