Extracting extension from filename in Python

后端 未结 24 2410
感情败类
感情败类 2020-11-22 13:23

Is there a function to extract the extension from a filename?

24条回答
  •  一生所求
    2020-11-22 14:10

    Surprised this wasn't mentioned yet:

    import os
    fn = '/some/path/a.tar.gz'
    
    basename = os.path.basename(fn)  # os independent
    Out[] a.tar.gz
    
    base = basename.split('.')[0]
    Out[] a
    
    ext = '.'.join(basename.split('.')[1:])   # <-- main part
    
    # if you want a leading '.', and if no result `None`:
    ext = '.' + ext if ext else None
    Out[] .tar.gz
    

    Benefits:

    • Works as expected for anything I can think of
    • No modules
    • No regex
    • Cross-platform
    • Easily extendible (e.g. no leading dots for extension, only last part of extension)

    As function:

    def get_extension(filename):
        basename = os.path.basename(filename)  # os independent
        ext = '.'.join(basename.split('.')[1:])
        return '.' + ext if ext else None
    

提交回复
热议问题