John
John

Reputation: 3080

How to get filename without some special extensions in python

I have a file that has some special extension. Sometime it is '.exe', or 'exe.gz' or 'exe.tar.gz'...I want to get the filename only. I am using the below code to get filename abc but it cannot work for all cases

import os
filename = 'abc.exe'
base = os.path.basename(filename)
print(os.path.splitext(base)[0])
filename = 'abc.exe.gz'
base = os.path.basename(filename)
print(os.path.splitext(base)[0])

Note that, I knew the list of extensions such as ['.exe','exe.gz','exe.tar.gz', '.gz']

Upvotes: 0

Views: 59

Answers (2)

lalam
lalam

Reputation: 195

How about a workaround like this?

suffixes = ['.exe','.exe.gz','.exe.tar.gz', '.gz']
def get_basename(filename):
    for suffix in suffixes:
        if filename.endswith(suffix):
            return filename[:-len(suffix)]
    return filename

Upvotes: 1

itismoej
itismoej

Reputation: 1847

You can just split with the . char and take the first element:

>>> filename = 'abc.exe'
>>> filename.split('.')[0]
'abc'

>>> filename = 'abc.exe.gz'
>>> filename.split('.')[0]
'abc'

Upvotes: 1

Related Questions