在 Python 中获取不带扩展名的文件名

Posted

技术标签:

【中文标题】在 Python 中获取不带扩展名的文件名【英文标题】:Get Filename Without Extension in Python 【发布时间】:2011-05-25 14:25:15 【问题描述】:

如果我的文件名类似于以下之一:

1.1.1.1.1.jpg

1.1.jpg

1.jpg

我怎样才能只获得文件名而不获得扩展名?正则表达式是否合适?

【问题讨论】:

这能回答你的问题吗? How to get the filename without the extension from a path in Python? 【参考方案1】:

您可以使用stem 方法获取文件名。

这是一个例子:

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file

【讨论】:

【参考方案2】:

如果我必须使用正则表达式,我会这样做:

s = re.sub(r'\.jpg$', '', s)

【讨论】:

【参考方案3】:

不需要正则表达式。 os.path.splitext是你的朋友:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')

【讨论】:

【参考方案4】:
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')

【讨论】:

【参考方案5】:

在大多数情况下,您不应该为此使用正则表达式。

os.path.splitext(filename)[0]

这也将通过保留整个名称来正确处理像.bashrc 这样的文件名。

【讨论】:

不适用于“git-1.7.8.tar.gz”,它只删除“.gz”。我为此使用basename[:-len(".tar.gz")] @blueyed:“不能正常工作”是一个观点问题。文件一个 gzip 文件,其基本名称是git-1.7.8.tar。没有办法正确猜测调用者想要去除多少个点,所以splitext() 只去除最后一个。如果你想处理像.tar.gz 这样的边缘情况,你必须手动完成。显然,你不能去掉所有的点,因为你最终会得到git-1

以上是关于在 Python 中获取不带扩展名的文件名的主要内容,如果未能解决你的问题,请参考以下文章

从文件的全名中获取不带扩展名的文件名

获取不带扩展名的文件名

Regex-所有不带.html扩展名的PHP文件

java - 如何在Java中获取没有扩展名的文件对象的名称? [复制]

Python 实现下载进度条(不带GUI界面)

Android - 如何获取文件扩展名? [复制]