如何在Python中从文件路径中获取文件名
在这篇文章中,我们将学习一个Python程序来从文件路径中获取文件名。
使用的方法
以下是完成这一任务的各种方法
- 使用操作系统模块的功能
-
使用Pathlib模块
-
使用正则表达式(regex模块)
方法1:使用操作系统模块函数
使用split()函数从文件路径中获取文件名
split() 函数将一个字符串分割成一个列表。我们可以定义分隔符;默认的分隔符是任何空白。
算法(步骤)
以下是执行所需任务时需要遵循的算法/步骤。-
- 使用import关键字来导入os模块。
-
创建一个变量来存储输入文件的路径。
-
使用 split()函数 将文件路径分割成一个基于’/’分隔符的单词列表。
-
使用 负数索引 从列表中获取最后一个元素(从末端开始索引,即-1,-2….)。
-
打印结果的文件名。
例子
下面的程序使用split()函数从给定的文件路径中返回文件名。
# importing os module
import os
# input file path
inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf'
# Printing the given file path
print("The given file path is:",inputFilepath)
# splitting the file path into a list of words based on '/' and
# getting the last element using negative indexing
print("The File Name is:\n",os.path.basename(inputFilepath).split('/')[-1])
输出
在执行时,上述程序将产生以下输出:
The given file path is: C:/Users/cirus/Desktop/tutorialsPoint.pdf
The File Name is:
tutorialsPoint.pdf
使用os.path.basename从文件路径中获取文件名
使用内置的Python函数 os.path.basename(), 人们可以确定指定路径中的基名。 路径名path的基名由函数 path.basename() 返回 , 它需要一个path参数。
例子
下面的程序使用os.path.basename()函数从给定的文件路径中返回文件名。
# importing os module
import os
# input path of the file
inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf'
# Printing the given input path
print("Give Input Path is:",inputFilepath)
# getting the last component(main file name )of the input file path
print("The File Name is:\n",os.path.basename(inputFilepath))
输出
在执行时,上述程序将产生下列输出 –
Give Input Path is: C:/Users/cirus/Desktop/tutorialsPoint.pdf
The File Name is:
tutorialsPoint.pdf
使用os.splitext()从文件路径中获取文件名
如果我们只需要没有扩展名的文件名或者只需要扩展名,这个方法将产生一个文件和它的扩展名。这里,os模块的splitext函数开始发挥作用。
os.splitext() 方法将返回一个包括文件名和内容的字符串的元组,我们可以使用索引来访问。
例子
下面的程序使用os.splitext()函数从给定的文件路径中返回文件名。
# importing os module
import os
inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf'
# Printing the given input path
print("Give Input Path is:",inputFilepath)
# getting the file name from the file path
fileName = os.path.basename(inputFilepath)
# splitting the file using the splittext() function
full_file = os.path.splitext(fileName)
# printing the tuple of a string containing file name and extension separately
print(full_file)
# Concatenating file name with file extension using string concatenation
print("The File Name is:\n",full_file[0] + full_file[1])
输出
Give Input Path is: C:/Users/cirus/Desktop/tutorialsPoint.pdf
('tutorialsPoint', '.pdf')
The File Name is:
tutorialsPoint.pdf
方法2:使用Pathlib模块
在Python Pathlib模块中,有几个描述文件系统路径的类,其语义适合于许多操作系统。这个模块是Python的基本实用模块之一。
如果我们想要一个带有扩展名的文件,我们可以利用名称属性,即使 干是 实用属性之一,可以从没有扩展名的链接中提取文件名。
例子
下面的程序使用 Path() 函数和Pathlib模块的stem属性从给定的文件路径中返回文件名。
# importing Path from pathlib module
from pathlib import Path
# input file path
inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf'
# getting the filename from the file path
# here the stem attribute extracts the file name from filepath
print('File Name is:',Path(inputFilepath).stem)
# here the name attribute returns full name(along with extension)
# of the input file
print("The File Name Along with Extension is:",Path(inputFilepath).name)
输出
File Name is: tutorialsPoint
The File Name Along with the Extension is: tutorialsPoint.pdf
方法3:使用正则表达式(regex模块)
为了将文件名与特定模式相匹配,我们可以使用正则表达式。
pattern - [\w]+?(?=\.)
- [\w] – 匹配集合内的单词
-
+?- 匹配字符串,如果在?关键字之前只出现一次的话
-
(?=) – 匹配任何没有换行的字符,并记住要停在。
regex re.search()方法
Python regex re.search()方法在整个目标字符串中搜索regex模式的出现,并返回找到匹配的适当的Match对象实例。re.search()只返回目标字符串中第一个与模式匹配的对象。
例子
下面的程序使用正则表达式(regex)从给定的文件路径中返回文件名—-。
# importing re(regex) module
import re
# input file path
inputFilepath = 'C:/Users/cirus/Desktop/tutorialsPoint.pdf'
# regex pattern to extract the file name
regex_pattern = '[\w-]+?(?=\.)'
# searching/matching the pattern of the input file path
result = re.search(regex_pattern, inputFilepath)
# printing the match name
print("The File Name is:",result.group())
输出
The File Name is: tutorialsPoint
总结
在这篇文章中,我们学习了如何使用三种不同的方法来从给定的文件路径中获取文件名。我们学习了如何使用操作系统模块的内置功能修改所提供的文件路径以满足我们的需要。