在Python中获取没有扩展名的文件名

use*_*652 85 python regex

如果我有一个像这样的文件名:

1.1.1.1.1.jpg

1.1.jpg

1.jpg
Run Code Online (Sandbox Code Playgroud)

如果没有扩展名,我怎么才能得到文件名?正则表达式是否合适?

Mar*_*tos 192

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

os.path.splitext(filename)[0]
Run Code Online (Sandbox Code Playgroud)

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

  • @blueyed:"不能正常工作"是一个透视问题.文件*是*一个gzip文件,其基本名称是`git-1.7.8.tar`.没有办法正确猜出调用者想要剥离多少个点,所以`splitext()`只剥离最后一个.如果你想处理像.tar.gz这样的边缘情况,你必须手工完成.显然,你不能剥离所有的点,因为你最终会得到`git-1`. (27认同)
  • 与"git-1.7.8.tar.gz"无法正常工作,它只删除".gz".为此,我使用`basename [: - len(".tar.gz")]`. (3认同)

Len*_*bro 25

>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Run Code Online (Sandbox Code Playgroud)


Vla*_*den 11

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

下面是一个例子:

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file
Run Code Online (Sandbox Code Playgroud)


Ala*_*ore 10

如果我必须使用正则表达式执行此操作,我会这样做:

s = re.sub(r'\.jpg$', '', s)
Run Code Online (Sandbox Code Playgroud)


Tri*_*ych 6

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

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Run Code Online (Sandbox Code Playgroud)