os.path库:Python操作和处理文件路径(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: os.path库:Python操作和处理文件路径(一)

前言


os.path是平台独立的文件名管理库,使用该库能够很方便来处理多个平台上的文件。即使程序不打算在平台之间移值,也应当使用os.path库来完成可靠的文件名解析。


本篇博文将详细介绍os.path库的用法。


解析路径的基本用法


os.path中的第一组函数可以用来将表示文件名的字符串解析为文件名的各个组成部分。这些函数并不要求路径真正存在,它们只是单纯的处理字符串而已。


常用的解析函数如下:

import os
paths = ["D:/document/csdn/opencv/20/10.png",
         "D:/document/csdn/opencv/20/",
         "D:/document/csdn/opencv/20",
         "d:" + os.sep + "10" + os.extsep + "txt",
         os.pardir + os.sep + "10" + os.extsep + "txt",
         os.curdir + os.sep + "10" + os.extsep + "txt", ]
for path in paths:
    print(path)
    print(os.path.split(path))


运行之后,效果如下:

os.sep:路径分隔符,字符串“/”或者“\”


os.extsep:文件名后缀的字符串“.”(点)


os.pardir:目录上一级,字符串“…”(双点)


os.curdir:当前目录,字符串“.”(点)


os.path.split:分割路径为两部分元组,第2个元素为路径最后的部分,可能是文件名,可能是空。第2个元素是前面的路径不包括文件名。


dirname()与basename()


当然,我们还可以不使用os.path.split进行分割,直接使用dirname()与basename()函数返回这两部分,具体代码如下:

import os
paths = ["D:/document/csdn/opencv/20/10.png",
         "D:/document/csdn/opencv/20/",
         "D:/document/csdn/opencv/20",
         "d:" + os.sep + "10" + os.extsep + "txt",
         os.pardir + os.sep + "10" + os.extsep + "txt",
         os.curdir + os.sep + "10" + os.extsep + "txt", ]
for path in paths:
    print(path)
    print(os.path.dirname(path))
    print(os.path.basename(path))


运行之后,效果如下:

dirname():返回文件路径最后一个分隔符前的路径


basename():返回文件路径最后一个分隔符后面的内容


splitext()与commonprefix()


splitext()函数与split()类似,不过它会根据扩展名分隔符而不是目录分隔符来分解路径。一般我们用该方法与前面的basename()结合获取文件名。具体代码如下:

import os
path = "D:/document/csdn/opencv/20/10.png"
filename = os.path.basename(path)
print(os.path.splitext(filename))


这里,我们会得到文件名以及后缀。运行效果如下:


当然,这是在存在文件名的情况下,如果只是单纯的路径,我们会得到空字符串。而如果直接跳过basename(),我们会得到前面的路径加文件名。


至于commonprefix()函数,它是用于判断一堆路径是否具有统一的公共前缀,如果有返回公共前缀。具体代码如下:

import os
paths = ["D:/document/csdn/opencv/20/10.png",
         "D:/document/csdn/opencv/20/",
         "D:/document/csdn/opencv/20",]
for path in paths:
    print(path)
print("公共前缀")
print(os.path.commonprefix(paths))


运行之后,效果如下:

相信大家测试的时候,发现了一个差不多的函数:commonpath()。该函数的才是我们最长使用的,因为commonprefix()有缺陷,我们先来看一段代码:

import os
paths = ["D:/document/csdn/opencv/20/10.png",
         "D:/document/csdn/opencv/2011111",
         "D:/document/csdn/opencv/20",]
for path in paths:
    print(path)
print("公共前缀")
print(os.path.commonpath(paths))
print(os.path.commonprefix(paths))


运行之后,效果如下:


可以看到,commonpath()函数返回的是共同的路径前缀,而commonprefix()虽然返回的路径存在,但不是共同的路径前缀,因为2011111是一个文件,commonprefix()将其裁成(20,1111)了。

相关文章
|
15天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
48 4
数据分析的 10 个最佳 Python 库
|
2天前
|
XML JSON 数据库
Python的标准库
Python的标准库
24 11
|
15天前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
65 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
2天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
27 8
|
9天前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
20 4
|
Python
Python编程:从网络地址中解析出系统文件路径
Python编程:从网络地址中解析出系统文件路径
136 0
|
8天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
7天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
13天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
128 59
|
7天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
31 10