Python os.path模块 | 8月更文挑战

525 阅读4分钟

玩转Python

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

复习回顾

我们上一期学习了os模块相关文件目录操作方法,有了基本掌握,接下来我们来进一步学习一下os模块的姊妹os.path模块。

通常,我们在学习时会把os模块和os.path模块两个一起对照学习。

在学习之前,我们先看看文件目录和路径的区别

  • 目录:终点是文件夹

    (1)目录是无法直接找到目标文件

    (2)目录下可能有N个文件或者文件夹

    (3)例如F:\Juejin\file\juejin 目标的终点为juejin文件夹

  • 路径:终点是目标文件。

    (1)根据路径是可以直接找到目标文件

    (2)路径又分为绝对路径与相对路径

    (3)路径的终点是文件,叫文件路径;路径的终点是目录,叫目录路径

    (4)例如路径F:\Juejin\juejin.txt,指向txt文件

💡敲黑板:路径是指具体的位置,它可以是文件📃,也可以是文件夹📁;目录则只能指文件所在的文件夹📁

💡os模块:主要对文件及目录操作;os.path模块重点对路径操作

1. os.path模块概述

os.path模块提供了路径判断、路径切分、路径链接、文件夹遍历的操作 常用的方便有如下:

方法描述
os.path.isabs(path)判断path是否绝对路径,返回布尔类型
os.path.isdir(path)判断path是否为目录,返回布尔类型
os.path.isfile(path)判断path是否为文件,返回布尔类型
os.path.exists(path)判断指定路径的文件是否存在,返回布尔类型
os.path.getsize(filename)返回文件的大小
os.path.abspath(path)返回绝对路径
os.path.dirname(path)返回目录的路径
os.path.getatime(filename)返回文件最后访问时间
os.path.getmtime(filename)返回文件最后修改时间
os.path.walk(top,func,arg)递归方式遍历目录
os.path.join(path,*paths)连接多个path
os.path.split(path)对路径进行分割,以列表形式返回
os.path.splitext(path)从路径中分割文件的扩展名

我们在cmd命令窗口🪟进行基本操作,如下:

>>> import os
>>> import os.path
>>> os.path.isabs("F:\JueJin")
True
>>> os.path.isdir("F:\Juejin")
True
>>> os.path.isdir("F:\Juejin\a.txt")
False
>>> os.path.exists("F:\Juejin")
True
>>> os.getcwd()
'F:\\Juejin'
>>> os.path.exists("a.txt")
True
>>> os.path.getsize(r"F:\JueJin\a.txt")
0
>>> os.path.getatime(r"F:\Juejin\a.txt")
1627867023.051934
>>> os.path.getmtime(r"F:\JueJin\a.txt")
1627867023.051934
>>> os.path.getctime(r"F:\JueJin\a.txt")
1627867023.051934

2. 对比os模块与os.path模块

我们前面学习了so模块,os.path模块有些方法也是与os模块重合,哪为什么还会有os.path模块存在?

带着疑问,我们来看看os模块和os.path模块两者区别

import os 
import os.path
  • os模块

通过import os来加载Python的模块目录中找到os.py文件里面的方法

  • os.path模块

在Python的模块目录中是不存在path.py文件,那os.path模块怎么被加载?

1.查看os.py源代码查看加载模块片段代码

(1)如果操作系统linux('posix'),则会通过import posixpath as path加载path模块

os代码片段1

(2)如果windows('nt'),则会通过import ntpath as path加载path模块

os代码片段2

2.Python解释器加载os.path步骤

(1)Python解释器会先加载基础的模块os模块 (2)通过os模块条件判断操作系统类型window还是Linux系统 (3)加载真正的模块并通过as命名path (4)sys.modules以字典类型来加载的当前模块,因此from os.path import来加载具体的方法

✨🌟os.path模块运行前,Python解释器已经加载来os模块。简单来讲,os是包,path是包里的一个模块。

3. 小试牛刀

场景一:生成新文件保存在指定文件夹里

import os.path
import time

def Mylogger(path):

    rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))

    filepath = os.path.dirname(path) #去掉文件名,返回目录,在文件目录下
    print(filepath)

    filename = rq+"logger"+".log"  # 文件名

    file = os.path.join(filepath,filename) #创建文件

    print(file)

Mylogger(r"F:\JueJin\a.txt")

运行结果如下:

os.path运行结果

总结

本期我们对os.path模块提供可以操作目录的方法,这些函数可以操作系统的目录本身。该模块提供exists()函数判断该目录是否存在;也提供来getctime()、getmtime()、getatime()函数来获取该目录的创建时间、最后一次修改时间、最后一次访问时间;还提供了getsize()函数来指定文件的大小等方法~

os模块与os.path模块在日常工作中对文件目录及路径相关方法在日志保存文件操作会频繁使用的,希望能帮到大家。

💪我们后续会继续学习文件相关的模块shutil、fileinputd等模块

以上是本期内容,期待大佬们点赞评论指正~