目录
Remove the extension from a Filename in Python
- 从 Python 中的文件名中删除扩展名
- 使用 pathlib.Path 从文件名中删除扩展名
- 使用 removesuffix() 从文件名中删除扩展名
- 使用 str.rsplit() 从文件名中删除扩展名
在 Python 中删除文件名的扩展名
使用该os.path.splitext()
方法从文件名中删除扩展名,例如result = os.path.splitext(file_path)[0]
. 该os.path.splitext
方法将返回一个元组,其中包含不带扩展名的文件名作为其第一个元素。
import os file_path = '/home/bobbyhadz/Desktop/my-file.txt' result = os.path.splitext(file_path)[0] # 👇️ '/home/bobbyhadz/Desktop/my-file' print(result) # 👇️ '/home/bobbyhadz/Desktop/my-file.docx' print(result + '.docx')
我们使用该os.path.splitext
方法从文件名中删除扩展名。
os.path.splitext方法将
路径拆分为包含根和扩展的元组。
import os file_path = '/home/bobbyhadz/Desktop/my-file.txt' # 👇️ ('/home/bobbyhadz/Desktop/my-file', '.txt') print(os.path.splitext(file_path))
要获取不带扩展名的文件名,请访问元组中的第一个元素。
如果指定的路径不包含扩展名,则元组中的第二个元素为空字符串。
import os file_path = '/home/bobbyhadz/Desktop/my-file' # 👇️ ('/home/bobbyhadz/Desktop/my-file', '') print(os.path.splitext(file_path))
如果提供的路径没有扩展名,我们将按原样返回字符串。
如果路径包含多个句点,则忽略之前的句点。
import os import pathlib file_path = '/home/bobby.hadz/Desktop/my-file.txt' # 👇️ ('/home/bobby.hadz/Desktop/my-file', '.txt') print(os.path.splitext(file_path))
或者,您可以使用pathlib.Path()
该类。
使用 pathlib.Path 从文件名中删除扩展名
要从文件名中删除扩展名:
- 实例化
pathlib.Path()
类以创建 Path 对象。 - 使用该
with_suffix()
方法从文件名中删除扩展名。
import pathlib file_path = '/home/bobbyhadz/Desktop/my-file.txt' fpath = pathlib.Path(file_path) result = fpath.with_suffix('') print(result) # 👉️ /home/bobbyhadz/Desktop/my-file print(fpath.stem) # 👉️ 'my-file' # 👇️ '/home/bobbyhadz/Desktop/my-file.docx' print(result.with_suffix('.docx'))
pathlib.Path
类用于根据您的操作系统创建一个或一个对象PosixPath
。WindowsPath
with_suffix
方法采用后缀并更改路径的后缀。
我们首先将一个空字符串传递给该方法以从文件名中删除扩展名。
如果需要添加一个扩展名,您可以选择调用具有不同扩展名的方法。
import pathlib file_path = '/home/bobbyhadz/Desktop/my-file.txt' fpath = pathlib.Path(file_path) result = fpath.with_suffix('') print(result) # 👉️ /home/bobbyhadz/Desktop/my-file print(fpath.stem) # 👉️ 'my-file' # 👇️ '/home/bobbyhadz/Desktop/my-file.docx' print(result.with_suffix('.docx'))
如果您只需要获取没有扩展名的文件名,则可以在对象上使用
stem
属性。Path
或者,您可以使用该removesuffix()
方法。
使用 removesuffix() 从文件名中删除扩展名
使用该str.removesuffix()
方法从文件名中删除扩展名,例如result = file_path.removesuffix('.txt')
. 该removesuffix()
方法将从文件名中删除指定的扩展名。
file_path = '/home/bobbyhadz/Desktop/my-file.txt' result = file_path.removesuffix('.txt') print(result) # 👉️ '/home/bobbyhadz/Desktop/my-file' print(result + '.docx') # 👉️ '/home/bobbyhadz/Desktop/my-file.docx'
该str.removesuffix()
方法在 Python 3.9+ 中可用。
str.removesuffix
方法检查字符串是否
以指定的后缀结尾,如果是,则该方法返回一个不包括后缀的新字符串,否则返回原始字符串的副本。
# 👇️ '/home/bobbyhadz/Desktop/my-file' print('/home/bobbyhadz/Desktop/my-file.txt'.removesuffix('.txt')) # 👇️ '/home/bobbyhadz/Desktop/my-file' print('/home/bobbyhadz/Desktop/my-file'.removesuffix('.txt'))
如果字符串不包含指定的后缀,则该方法按原样返回字符串。
确保您运行的是 Python 3.9 或更高版本,以便能够使用该
str.removesuffix
方法。
或者,您可以使用该str.rsplit()
方法。
使用 str.rsplit() 从文件名中删除扩展名
要从文件名中删除扩展名:
- 使用该
str.rsplit()
方法将文件名从右侧拆分为句点一次。 - 访问 index 处的列表项
0
。 - 索引处的列表项
0
将包含不带扩展名的文件名。
file_path = '/home/bobbyhadz/Desktop/my-file.txt' result = file_path.rsplit('.', 1)[0] print(result) # 👉️ '/home/bobbyhadz/Desktop/my-file' print(result + '.docx') # 👉️ '/home/bobbyhadz/Desktop/my-file.docx'
str.rsplit
方法使用提供的分隔符作为分隔符字符串返回字符串中的单词列表。
file_path = '/home/bobbyhadz/Desktop/my-file.txt' # 👇️ ['/home/bobbyhadz/Desktop/my-file', 'txt'] print(file_path.rsplit('.', 1))
该方法采用以下 2 个参数:
姓名 | 描述 |
---|---|
分隔器 | 在每次出现分隔符时将字符串拆分为子字符串 |
最大分裂 | 最多maxsplit 完成拆分,最右边的(可选) |
除了从右边分裂,rsplit()
表现得像split()
.
我们在句号上从右边拆分文件名一次。
这种方法处理文件名不包含任何句点的情况。
file_path = '/home/bobbyhadz/Desktop/my-file' result = file_path.rsplit('.', 1)[0] print(result) # 👉️ '/home/bobbyhadz/Desktop/my-file'
但是,如果文件名包含句点但不包含扩展名,则会导致混淆行为。
file_path = '/home/bobby.hadz/Desktop/my-file' # 👇️ ['/home/bobby', 'hadz/Desktop/my-file'] print(file_path.rsplit('.', 1)) result = file_path.rsplit('.', 1)[0] print(result) # 👉️ '/home/bobby'
前面介绍的方法在这种情况下更为宽容。