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


Answers:


203

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

os.path.splitext(filename)[0]

这也将.bashrc通过保留全名来正确处理文件名。


4
无法与“ git-1.7.8.tar.gz”一起正常使用,只能删除“ .gz”。我用basename[:-len(".tar.gz")]这个。
2011年

28
@blueyed:“无法正常工作”是一个观点问题。该文件 gzip文件,其基本名称是git-1.7.8.tar。无法正确猜测呼叫者要剥离多少点,因此splitext()只能剥离最后一个。如果要处理像这样的边缘情况.tar.gz,则必须手动完成。显然,您无法去除所有点,因为您最终会得到git-1
马塞洛·坎托斯


10

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

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

6

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

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

5

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

这是一个例子:

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.