在这篇文章中,我们将一起探索如何使用 Python 编程语言 从给定的文件路径中提取文件名。在进行自动化操作时,我们经常会遇到需要从路径中分离出文件名的情况。
在开始之前,最好对以下内容有所了解:
- Python OS 模块
- Python 路径模块
- 正则表达式
- 内置的 rsplit() 方法
方法 1:使用 Python OS 模块
示例 1:使用 split() 从路径中获取不带扩展名的文件名
Python 的 split() 函数会使用定义的分隔符将给定的文本拆分为一个字符串列表,并返回由提供分隔符划分后的字符串列表。
Python
import os
path = ‘D:\home\Riot Games\VALORANT\live\VALORANT.exe‘
print(os.path.basename(path).split(‘/‘)[-1])
INLINECODE307207c0os.path.basename()INLINECODE331cba0apath.basename() 函数接受一个路径参数,并返回该路径的基本名称。
Python
CODEBLOCK_847a0c86
输出:
test.txt
示例 3:使用 os.path.splitext 从文件路径中获取文件名
上述方法虽然可以得到文件及其扩展名,但如果我们只需要不带扩展名的文件名,或者只需要扩展名呢?这时,os 模块中的 splitext 函数 就派上用场了。该方法会返回一个包含文件名和文本的元组,我们可以通过索引来访问它们。
示例:
Python
import os
file_path = ‘C:/Users/test.txt‘
file_name = os.path.basename(file_path)
file = os.path.splitext(file_name)
print(file) # 返回字符串元组
print(file[0] + file[1])
INLINECODE7f08e196nameINLINECODE1e34acff
输出:
test
test.txt
方法 3:使用正则表达式从文件路径中获取文件名
我们可以使用 正则表达式 来匹配特定模式的文件名。
**模式 - **[\w]+?(?=\.)
这个模式分为 3 个部分:
[\w]匹配集合中的单词字符+?仅当字符串在 ? 关键字前出现一次时才匹配(?=)匹配除换行符外的所有字符,并确保在指定位置停止。
示例:
Python
import re
file_path = ‘C:/Users/test.txt‘
pattern = ‘[\w-]+?(?=\.)‘
# 搜索模式
a = re.search(pattern, file_path)
# 打印匹配结果
print(a.group())
INLINECODEb7e7350csplit()INLINECODE734c6d6crsplit()` 方法将最后一个组件(应该是文件名和扩展名)拆分为包含文件名和扩展名的列表。之后,我们可以通过索引从该列表中提取文件名。
下面是如何实现这一点的示例:
Python
def get_file_name(file_path):
file_path_components = file_path.split(‘/‘)
file_name_and_extension = file_path_components[-1].rsplit(‘.‘, 1)
return file_name_and_extension[0]