Python 从路径获取不带扩展名的文件名

Muhammad Waiz Khan 2023年10月10日
  1. 在 Python 中使用 pathlib.path().stem 方法从路径中获取没有扩展名的文件名
  2. 使用 Python 中的 os.path.splitext()string.split() 方法从路径中获取不带扩展名的文件名
  3. 在 Python 中使用 os.path.basename()os.path.splitext() 方法从路径中获取文件名
Python 从路径获取不带扩展名的文件名

本教程将演示在 Python 中从文件路径中获取不带扩展名的文件名的各种方法。假设我们的目标是从以字符串形式存在的文件路径列表中获取文件名,比如从路径 Desktop/folder/myfile.txt 中,我们只得到没有 .txt 扩展名的文件名 myfile

在 Python 中使用 pathlib.path().stem 方法从路径中获取没有扩展名的文件名

path().stem 方法将文件路径作为输入,通过从文件路径中提取文件名来返回。例如,从路径 Desktop/folder/myfile.txt 中,它将返回不含 .txt 扩展名的 myfile

下面的代码示例演示了如何使用 path().stem 从文件路径中获取不含文件扩展名的文件名。

from pathlib import Path

file_path = "Desktop/folder/myfile.txt"
file_name = Path(file_path).stem
print(file_name)

输出:

myfile

使用 Python 中的 os.path.splitext()string.split() 方法从路径中获取不带扩展名的文件名

os 模块的 path.splitext() 方法将文件路径作为字符串输入,并将文件路径和文件扩展名作为输出。

由于我们要从文件路径中获取文件名,所以可以先用 os.path.splitext() 方法将文件路径中的文件扩展名去掉。拆分结果的第一个元素就是没有扩展名的文件路径。这个结果使用/作为分隔符进一步分割它。最后一个元素是没有扩展名的文件名。下面的代码示例演示了如何使用 path.splitext()string.split() 方法从文件路径中获取不带扩展名的文件名。

import os

file_path = "Desktop/folder/myfile.txt"

file_path = os.path.splitext(file_path)[0]
file_name = file_path.split("/")[-1]
print(file_name)

输出:

test

在 Python 中使用 os.path.basename()os.path.splitext() 方法从路径中获取文件名

在 Python 中,os 模块的 path.basename() 方法将文件路径作为输入,并返回从文件路径中提取的基名。例如,Desktop/folder/myfile.txt 的基名是 myfile.txt

由于我们要从文件路径中获取文件名,可以使用 path.basename() 方法提取基名,使用 path.splitext() 提取文件名。下面的代码示例演示了如何使用 path.basename()path.splitext() 方法从文件路径中获取文件名。

import os

file_path = "Desktop/folder/myfile.txt"

basename = os.path.basename(file_path)
file_name = os.path.splitext(basename)[0]
print(file_name)

输出:

myfile
警告
如果文件的名字是 myfile.tar.gz,则上述所有方法都会返回 myfile.tar 作为文件名。

假设我们需要从路径 Desktop/folder/myfile.tar.gz 中获取不带 . 后面的部分的文件名,比如 myfile 而不是 myfile.tar,可以使用 string.index() 方法从 myfile.tar 中只提取 myfile。但是这个方法的缺点是,如果 . 是文件名的一部分,比如 my.file.tar.gz,它将返回 my 作为文件名。

下面的代码示例,我们如何使用 string.index() 从上面解释的方法的输出 myfile.tar 中删除 .tar

file_name = "myfile.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

file_name = "my.file.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

输出:

myfile
my

相关文章 - Python File