Python基础教程

006_路径模块os_path与pathlib

路径模块os.path与pathlib

路径模块os.path与pathlib概述

路径os.path模块与pathlib模块功能相似(功能重复)。pathlib是Python3.4以后才出现的“面向对象的文件系统路径”。os.path是对底层的路径字符串操作模块,历史悠久,应用最多。

下面主要对os.path模块对路径处理的常用方法进行讲解,更多内容以及pathlib方法介绍,大家可以网上查询或者参考官方手册。

os.path模块常用方法

  • os.path.abspath(path):返回绝对路径
  • os.path.basename(path):返回文件名
  • os.path.split(path):把路径分割成 dirname 和 basename,返回一个元组
  • os.path.join(path1[, path2[, ...]]):把目录和文件名合成一个路径
  • os.path.isfile(path):判断路径是否为文件
  • os.path.isdir(path):判断路径是否为目录
  • os.path.exists(path):路径存在则返回True,路径损坏返回False

os.path模块还有一些方法(了解)

  • os.path.getatime(path):返回最近访问时间(浮点型秒数)
  • os.path.getmtime(path):返回最近文件修改时间
  • os.path.getctime(path):返回文件 path 创建时间
  • os.path.getsize(path):返回文件大小,如果文件不存在就返回错误
  • os.path.isabs(path):判断是否为绝对路径
  • os.path.realpath(path):返回path的真实路径
  • os.path.dirname(path):返回文件夹路径

os.path模块对路径的分割与提取

下面提供一个文件目录结构,目录路径为E:wkp01p00test01atestpkg。

atestpkg
├─ mytools
    ├─ __init__.py
    ├─ myadd.py
    └─ myappend.py
├─ myfile.txt
├─ t05.py
├─ t06.py
└─ t07.py

当前程序为t07.py文件。

相对路径,就是从一个已知路径(参照路径)来说其他路径。比如当前路径中的的"mytools"文件夹,只需要说出此文件夹名称,我们就知道它的位置是当前文件夹中的子文件夹。

绝对路径,就是从磁盘根路径开始描述到目标文件夹。比如"mytools"文件夹的绝对路径是E:wkp01p00test01atestpkgmytools。

下面来看演示程序

import os

print(os.getcwd())     # E:wkp01p00test01atestpkg
print(os.listdir())    # ['myfile.txt', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']

# 得到文件绝对路径含文件名
print("绝对路径:",os.path.abspath("myfile.txt"))
# 从路径中提取文件名
print("提取文件名:",os.path.basename("E:\wkp01p00\test01\atestpkg\myfile.txt"))
# 从路径中提取文件夹路径和此文件名
print("分割路径:",os.path.split("E:\wkp01p00\test01\atestpkg\myfile.txt"))
# 将文件夹路径与文件名拼接成绝对路径
print("拼接路径:",os.path.join(os.getcwd(),"myfile.txt"))
# 用字符串拼接方法得到绝对路径
strpath="E:\wkp01p00\test01\atestpkg"+"\"+"myfile.txt"
print("字符串拼接:",strpath)

运行结果如下

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t07.py
E:wkp01p00test01atestpkg
['myfile.txt', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
绝对路径: E:wkp01p00test01atestpkgmyfile.txt
提取文件名: myfile.txt
分割路径: ('E:\wkp01\p00\test01\atestpkg', 'myfile.txt')
拼接路径: E:wkp01p00test01atestpkgmyfile.txt
字符串拼接: E:wkp01p00test01atestpkgmyfile.txt

Process finished with exit code 0

文件和文件夹的判断

示例程序如下

import os

print(os.getcwd())     # E:wkp01p00test01atestpkg
print(os.listdir())    # ['myfile.txt', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']

# 判断文件和文件夹是否存在
if os.path.exists("myfile.txt"):      # 存在
    print("存在myfile.txt")
if os.path.exists("myfile2222.txt"):  # 不存在
    print("myfile2222.txt")
if os.path.exists("mytools"):         # 存在
    print("存在mytools")

# 文件的判断识别
if os.path.isfile("myfile.txt"):    # 是文件
    print("myfile.txt是个文件")
if os.path.isdir("myfile.txt"):     # 不是文件
    print("myfile.txt是个文件夹")

# 文件夹的判断识别
if os.path.isdir("mytools"):        # 是文件夹
    print("mytools是个文件夹")
if os.path.isfile("mytools"):       # 不是文件夹
    print("mytools是个文件")

运行结果

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t07.py
E:wkp01p00test01atestpkg
['myfile.txt', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
存在myfile.txt
存在mytools
myfile.txt是个文件
mytools是个文件夹

Process finished with exit code 0
这篇文章对您有用吗?

我们要如何帮助您?