是否有从文件名中提取扩展名的功能?


当前回答

import os.path
extension = os.path.splitext(filename)[1]

其他回答

另一种右拆分解决方案:

# to get extension only

s = 'test.ext'

if '.' in s: ext = s.rsplit('.', 1)[1]

# or, to get file name and extension

def split_filepath(s):
    """
    get filename and extension from filepath 
    filepath -> (filename, extension)
    """
    if not '.' in s: return (s, '')
    r = s.rsplit('.', 1)
    return (r[0], r[1])

即使这个问题已经得到了回答,我也会在Regex中添加解决方案。

>>> import re
>>> file_suffix = ".*(\..*)"
>>> result = re.search(file_suffix, "somefile.ext")
>>> result.group(1)
'.ext'

从Python中的文件名提取扩展名

Python os模块splitext()

splitext()函数将文件路径拆分为具有两个值的元组:root和extension。

import os
# unpacking the tuple
file_name, file_extension = os.path.splitext("/Users/Username/abc.txt")
print(file_name)
print(file_extension)

使用Pathlib模块获取文件扩展名

获取文件扩展名的Pathlib模块

import pathlib
pathlib.Path("/Users/pankaj/abc.txt").suffix
#output:'.txt'

如果你喜欢正则表达式,那就是一个真正的单行。即使中间有额外的“.”也无关紧要

import re

file_ext = re.search(r"\.([^.]+)$", filename).group(1)

查看此处查看结果:单击此处

3.4版新增。

import pathlib

print(pathlib.Path('yourPath.example').suffix) # '.example'
print(pathlib.Path("hello/foo.bar.tar.gz").suffixes) # ['.bar', '.tar', '.gz']

我很惊讶还没有人提到pathlib,pathlib太棒了!