在 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 中获取不带扩展名的文件名的主要内容,如果未能解决你的问题,请参考以下文章