python【os模块文件读写操作】超详细

news2025/4/17 13:47:04

一、os 模块是什么:

os 模块是python 标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文档和目录

二、认识文件路径分隔符:

- 路径表示

"\"在windows操作系统中表示区分文件的存储路径层级关系比如: test是D盘下的直系目录,可以表示为:D:\test but

"D:/test" # "/"是本地也是就客户端 文件系统区分层级关系的标识符

r"D\test" "\" 右斜杠在python语言中具有转义字符的意思,r的意思是将字符串视为原始字符串,这意味着将忽略所有转义码,按照原来意思输出

"D:\\test" # \\ 表示绝对路径,在程序处理文件存储路径中,"\\" 表示 "/",是上一层文件目录与下一层文件目录的分隔符,区分上下层级关系。

三、如何区分相对路径和绝对路径:

1、绝对路径就是无论从外部还是内部访问,都能够通过此路径找到文件夹,而相对路径是相对于自身的,其他位置的文件和路径,只能通过内部访问。
2、外部不能通过此路径访问到文件,通俗的来说,绝对路径是一条大家都能够通到目的地的路;而相对路径是一条只有你自己知道怎么走的路。
资料来源: https://jingyan.baidu.com/article/358570f6b854f98f4624fc6b.html

相对路径:指的是内部访问,从内部的一个文件去另一个文件

./test.html 和test.html 表达的含义是一致的,表示的是当前位置是:test.html

../ceshi.py 表示的是上一级目录,也就是说假如有个文件是ceshi.py,在test.html的下面,ceshi.py的路径为:test.html/ceshi.py

ceshi.py 的路径./test/ceshi.py ,ceshi2.py的路径 ./test/xiangdui/ceshi2.py ,现在当前位置在ceshi.py,想去ceshi2.py这个位置 采用的方法就是: “../test/ceshi.py”

绝对路径:指的是从外部访问,从外部直接去一个文件。

假如我要去ceshi.py: D:/test.html/ceshi.py,通过D:/test.html/ceshi.py直接就可以到达。

os模块的常用方法:(谨记 “-”符号不是特殊字符只是作者在写os模块笔记时,用来区分行与行之间层次关系的符号,测试时一定要去掉)

getcwd() :获取当前执行文件的路径

os.getcwd()

使用方法:os.getcwd()
      - import os
      - fuck = os.getcwd()
      - print(fuck)

listdir() :传入一个path路径,返回的是该路径下所有直系文件目录 值是一个列表

使用方法:os.listdir()

- import os
        - import pprint
        - patth = 'E:/Java软件'  释义:将E盘下的java文件复制给patth对象。
        - fuck = os.listdir(patth)  释义:调用os模块中listdir方法将对象patth传递进去。
        - pprint.pprint(fuck)  释义:格式化打印看起来比较规整。

walk() :传入任意一个path路径,深层次变例每一个文件的内容,返回的结果是一个由路径,文件夹列表,文件列表组成的元组。

使用方法:os.walk()

-  patth = 'E:/Java软件'
       - for patth,dir,file in os.walk(patth):
         print(patth)         释义:paath 返回的是一个文件路径
         pprint.pprint(dir)   释义:dir 返回的是一个个文件夹目录,先从Java文件夹开始,遍历出下一层所有文件夹,遍历完成后,会遍历出的第一个文件夹开始,遍历出本文件夹下的所有文件夹,如果没有文件则会返回为空
         pprint.pprint(file)  释义:返回的是一个个文件,xxx不包括文件夹xxxx

path.exists() : 用于测试的文件路径是否存在

使用方法:os.path.exists()

path = 'E:\Java软件'
        if  os.path.exists(path):
            print("指定的文件夹存在")
        else:
            print("指定的问价夹不存在")

mkdir() : 传入一个path路径,创建单层(直系文件)文件夹;如果文件夹已经存在,就会报错。

使用方法:os.mkdir(path)

 - path = 'E:\Java软件'
          os.getcwd()
          patth = os.getwd()+"/cesi_fuck"
          os.mkdir(patth)

makedirs() : 传入一个path路径,生成一个递归文件夹(多层级文件夹)(E:\java文件\cesi_fuck\hua_wei) 这就是一个多层级文件夹

使用方法: os.makedirs()

- path = 'E:\Java软件'
        os.getcwd()
        patth = path + '\\cesi_fuck\\hua_wei'
        os.makedirs(patth)

rmdir() :传入指定路径删除指定路径下的文件夹。注意: 该方法只能删除空文件夹,删除非空文件夹会报错

使用方法: os.rmdir()

path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块\cesi_fuck'
      os.rmdir(path)

案例总结:

案例实操:测试本地是否存在指定的文件夹,如果存在删除文件重新创建一个指定的文件夹,否则直接创建这样一个文件夹

patth = r'E:\Java软件\cesi_fuck'
        os.getcwd() 释义:表示当前目录,就是当前python文件的运行的目录
        if os.path.exists(patth):
            os.rmdir(patth)
            os.mkdir(patth)
            print("文件夹已存在,删除后重新创建")
        else:
            os.mkdir(patth)
            print("指定的文件夹不存在,创建一个新的文件夹")

path.isdir(): 传入一个完整的文件路径,判断它是否是文件

使用方法: os.path.isdir()

fuck = os.getcwd()
     file_list = os.listdir(fuck) #返回当前工作路径下的文件夹
       for file in file_list:
            if os.path.isdir(file):
                print(file)

path.sep(): 返回当前操作系统的路径分隔符(层级关系用什么符号区分)

使用方法: os.path.sep()

 fuck = os.path.sep
       print(fuck)

path.abspath() :返回指定目录的“绝对路径”

使用方法: os.path.abspath()

path = os.getcwd()
      file = 'E:\Java软件\cesi_fuck'
      fuck = os.path.abspath(".")  #当前目录的绝对路径 和 os.getcwd() 是一样的
           - os.path.abspath("..") #返回当前目录的上一层目录的绝对路径
           - os.path.abspath(file) #当前路径相对于指定文件路径 “file” 的绝对路径

path.getsize() :传入一个文件的路径,会返回该文件的大小(计算文件大小的方法),谨记只能计算文件,不能是文件夹的大小

使用方法:os.getsize()

path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块\测试3\Test text.txt'

- os.path.getsize(path)

测试可作为参考:

path.getsize()不是只能计算文件的大小吗? 我们可以通过两层for循环实现让它获取文件夹大小,谨记这里只是,从文件夹中一个一个遍历出每一个文件还是只能对文件大小进行计算,文件夹的话,我不能实现对他们的层叠相加,大家可以去试试

import os
import pprint
path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块'
for patth,dir,file in os.walk(path):
    # print(file)
    for i in file:
        print(i)
        fuck = os.path.getsize(i)
        print(fuck)

返回的结果:

总结:对于计算机专业的学生来说,坚持才会是制胜的法宝,不排除有天赋异禀的人,事半功倍的人,但对于普通人来讲,只有不断的坚持,思考,耐心,细心,具备这些学者的所必备素质,方可初见成效。

有问题欢迎留言,小马随时为你的python学习之路鞍前马后。

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

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

相关文章

2022爱分析 · DataOps厂商全景报告 | 爱分析报告

报告编委 李喆 爱分析合伙人&首席分析师 廖耘加 爱分析分析师 目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1. 研究范围定义 研究范围 在后疫情时代,以数据分析为代表的数据消费场景日益丰富&…

Linux 用户讲解

目录 Linux 用户介绍 Linux用户类型 UID 用户组ID Linux 用户相关命令 id 查看用户信息 useradd 创建新的用户账户 groupadd 创建新的用户组 usermod 修改用户的属性 passwd 修改用户的密码、过期时间等 userdel 删除用户 通过文件的方法新建、编辑用户 /etc/p…

【操作系统】磁盘IO常见性能指标和分析工具实战

1.磁盘读写常见的指标 (1)IOPS(Input/Output Operations per Second) 指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,有顺序IOPS和随机IOPS比如…

设计模式第五讲-装饰器模式和代理模式详解

一. 装饰器模式 1. 背景 在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以…

软件测试工程师需要掌握哪些技能呢?

在谈到软件测试工程师时,许多人还是会想到那些重复使用软件并试图在频繁的操作中发现 BUG的人,也就是人们常说的按照测试规范和测试案例来测试软件,检查软件是否有错误,判断软件是否稳定。但这是一个很老派和错误的观点。 由于以…

持续测试:企业的4项策略

对于旅游业和酒店服务来说,节假日无疑是最繁忙的时期。2022年的节假日历经了多重变化,恶劣的天气以及不可抗力因素影响了许多出行计划,也影响了航空公司的运营。为了确保一个顺利和成功的假期,开发团队必须为意想不到的事情做好准…

openvino yolov5/ssd 实时推流目标检测在html上显示

安装ffmepg并添加到环境变量中,流媒体使用m7s 运行效果 SSD:检测在10ms左右,yolov5在100ms左右 app.py #!/usr/local/bin/python3 # encodin: utf-8import subprocess import threading import time import cv2 import osfrom OpenVinoYoloV…

遥感概念理解(更新中)

目录看一幅波长与光对应的图1、波段2、波段组合3、多波段数据的三种存储方式4、全色5、彩色6、 多光谱7、高光谱看一幅波长与光对应的图 1、波段 波段又称为波谱段或波谱带,在遥感技术中,通常把电磁波谱划分为大大小小的段落,大的成为波段区…

2023年数据安全的下一步是什么?

IT 预算和收入增长领域是每个年度开始时的首要考虑因素,在当前的世界经济状况下更是如此。 IT 部门和数据团队正在寻找确定优先级、维护和构建安全措施的最佳方法,同时又具有成本效益。 这是一个棘手的平衡点,但却是一个重要的平衡点&#…

java ssm自行车在线租赁系统idea

当前自行车在社会上广泛使用,但自行车的短距离仍旧不能完全满足广大用户的需求。自行车在线租赁系统可以为用户提供租赁用车等功能,拥有较好的用户体验.能实时在线租赁提供更加快捷方便的租车方式,解决了常见自行车在线租赁系统较为局限的自行车归还功能。 通过使用本系统&…

C语言学习笔记(九):文件的操作

C文件的知识 什么是文件 操作系统把各种设备都统一作为文件来处理。例如,终端键盘是输入文件,显示屏和打印机是输出文件。 文件一般指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的 输入输出是数据传送的过程,数据…

【LeetCode】1124. 表现良好的最长时间段

1124. 表现良好的最长时间段 题目描述 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间…

多线程下载工具axel的安装和使用

多线程下载工具axel的安装和使用 Axel是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载。 Axel 支持 HTTP、HTTPS、FTP 和 FTPS 协议。它也可以使用多个镜像站点下载单个文件…

Springboot 使用插件 自动生成Mock单元测试 Squaretest

缘起 很多公司对分支单测覆盖率会有一定的要求,比如 单测覆盖率要达到 60% 或者 80%才可以发布。 有时候工期相对紧张,就优先开发功能,测试功能,然后再去补单元测试。 但是编写单元测试又比较浪费时间,有没有能够很大…

Spirng 痛苦源码学习(四)——AOP老大哥

文章目录前言一、探究AOP开始,判断导入的相关组件1.跟踪源码流程二、对切面中的增强方法进行增强1.源码的过程三、使用aop的目标类生成代理对象总结前言 Spring的两大特性:IOC;AOP。本篇仅以跟完Spring AOP相关源码为依据写的总结 一、探究A…

MySQL入门篇-MySQL高级窗口函数简介

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL高级窗口函数 窗口函数在复杂查询以及数据仓库中应用得比较频繁 与sql打交道比较多的技术人员都需要掌握 如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本 分析函数有3个基本组成…

matlab进行双目标定获取双目参数并打印教程

文章目录前言1.打开matlab进行双目标定2.获取想要的参数前言 在相同的标定算法和标定参数下,Python和Matlab的标定精度是相同的。因为标定精度主要取决于标定算法和标定参数的质量,而不是编程语言的选择。 不同的编程语言可能使用不同的库或实现细节&…

Hackergame 2020

3.Hackergame 2020 1.签到 url:http://202.38.93.111:10000/ 打开签到题页面,拖动滑杆,如果将滑杆滑动到最左边,提交 0,那么我们会得到成功的返回,但是没有 flag 尝试手动提交一些非整数的值&#xff0c…

HTML+CSS

HTML技术 什么是HTML Hyper Text Markup Language HTML:超文本标记语言,内部全部是一些不同的标记符号。 通俗的来讲:其实就是“网页”。 HTML 网页 网页的特点: 1、所有的网页都是通过【浏览器】来进行解析的。2、所有的网…

【MySQL】子查询

这里写自定义目录标题子查询1、子查询的基本使用2、 单行子查询2.1、单行比较查询2.2、HAVING 中的子查询2.3、CASE中的子查询3、多行子查询4、相关子查询5、EXISTS 与 NOT EXISTS关键字子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQ…