如何在 Python 中从文件路径获取文件名?
在本文中,我们将学习一个从文件路径中获取文件名的 Python 程序。
使用的方法
以下是完成此任务的各种方法 -
使用 OS 模块函数
使用 Pathlib 模块
使用正则表达式(regex 模块)
方法 1:使用 OS 模块函数
使用 split() 函数从文件路径中获取文件名
split() 函数将字符串拆分为列表。我们可以定义分隔符;默认分隔符是任意空格。
算法(步骤)
以下是执行所需任务需要遵循的算法/步骤。 −
使用 import 关键字导入 os 模块。
创建一个变量来存储输入文件路径。
使用 split() 函数 根据 '/' 分隔符将文件路径拆分为单词列表。
使用 负索引(从末尾索引,即 -1、-2……)从列表中获取最后一个元素。
打印结果文件名。
示例
以下程序使用 split() 函数从给定的文件路径返回文件名 −
# 导入 os 模块 import os # 输入文件路径 inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf' # 打印给定的文件路径 print("给定的文件路径是:",inputFilepath) # 根据 '/' 将文件路径拆分为单词列表并 # 使用负索引获取最后一个元素 print("文件名是:\n",os.path.basename(inputFilepath).split('/')[-1])
输出
执行时,上述程序将生成以下输出 -
给定的文件路径是:C:/Users/cirus/Desktop/tutorialsPoint.pdf 文件名是: tutorialsPoint.pdf
使用 os.path.basename 从文件路径获取文件名
使用内置 Python 函数os.path.basename(), 可以确定指定路径中的基本名称。路径名路径的基本名称由函数 path.basename(), 返回,该函数接受路径参数。
示例
以下程序使用 os.path.basename() 函数从给定的文件路径返回文件名 −
# 导入 os 模块 import os # 文件的输入路径 inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf' # 打印给定的输入路径 print("输入路径为:",inputFilepath) # 获取输入文件路径的最后一个组件(主文件名) print("文件名为:\n",os.path.basename(inputFilepath))
输出
执行时,上述程序将生成以下输出 -
输入路径为:C:/Users/cirus/Desktop/tutorialsPoint.pdf 文件名为: tutorialsPoint.pdf
使用 os.splitext() 从文件路径获取文件名
如果我们只需要文件名而不带扩展名或只需要扩展名,则此方法将生成一个文件及其扩展名。在这里,os 模块的 splitext 函数开始发挥作用。
os.splitext() 方法将返回一个包含文件名和内容的字符串元组,我们可以使用索引来访问它。
示例
以下程序使用 os.splitext() 函数从给定的文件路径返回文件名 −
# 导入 os 模块 import os inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf' # 打印给定的输入路径 print("输入路径为:",inputFilepath) # 从文件路径获取文件名 fileName = os.path.basename(inputFilepath) # 使用 splittext() 函数拆分文件 full_file = os.path.splitext(fileName) # 分别打印包含文件名和扩展名的字符串元组 print(full_file) # 使用字符串连接将文件名与文件扩展名连接起来 print("文件名为:\n",full_file[0] + full_file[1])
输出
输入路径为:C:/Users/cirus/Desktop/tutorialsPoint.pdf ('tutorialsPoint', '.pdf') 文件名为: tutorialsPoint.pdf
方法 2:使用 Pathlib 模块
Python Pathlib 模块中提供了几个类,它们使用适合多种操作系统的语义来描述文件系统路径。此模块是 Python 的基本实用程序模块之一。
如果我们想要文件扩展名,我们可以使用 name 属性,即使 stem 是实用程序属性之一,它允许从不带扩展名的链接中提取文件名。
示例
以下程序使用 Path() 函数和 Pathlib 模块的 stem 属性从给定的文件路径返回文件名 -
# 从 pathlib 模块导入 Path from pathlib import Path # 输入文件路径 inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf' # 从文件路径获取文件名 # 此处 stem 属性从文件路径中提取文件名 print('File Name is:',Path(inputFilepath).stem) # 此处 name 属性返回全名(以及带扩展名) 输入文件的数量 print("文件名和扩展名是:",Path(inputFilepath).name)
输出
文件名是:tutorialsPoint 文件名和扩展名是:tutorialsPoint.pdf
方法 3:使用正则表达式(regex 模块)
为了将文件名与特定模式匹配,我们可以使用正则表达式。
模式 - [\w]+?(?=\.)
上述模式分为 3 个模式 −
[\w] − 匹配集合内的单词
+? − 匹配在 ? 之前出现一次的字符串关键字
(?=) − 匹配任何不带换行符的字符,并记住停止于此。
regex re.search() 方法
Python regex re.search() 方法搜索整个目标字符串以查找正则表达式模式的出现,并返回找到匹配项的相应匹配对象实例。 re.search() 仅返回目标字符串中与模式匹配的第一个结果。
示例
以下程序使用正则表达式 (regex) 从给定文件路径返回文件名 -
# 导入 re(regex) 模块 import re # 输入文件路径 inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf' # 用于提取文件名的正则表达式模式 regex_pattern = '[\w-]+?(?=\.)' # 搜索/匹配输入文件路径的模式 result = re.search(regex_pattern, inputFilepath) # 打印匹配名称 print("文件名为:",result.group())
输出
文件名为:tutorialsPoint
结论
在本文中,我们学习了如何使用三种不同的方法从给定的文件路径中获取文件名。我们学习了如何使用 OS 模块的内置功能修改提供的文件路径以满足我们的需求。