I want to abstract away differences between zipfile and rarfile modules. In my code i want to call ZipFile
or RarFile
constructors depending on file format. Currently i do it like that.
def extract(dir, f, archive_type):
'''
archive_type should be 'rar' or 'zip'
'''
images = []
if archive_type == 'zip':
constructor = zipfile.ZipFile
else:
constructor = rarfile.RarFile
with directory(dir):
with constructor(encode(f)) as archive:
archive.extractall()
os.remove(f)
images = glob_recursive('*')
return images
Is there any more elegant way for dynamic object calling?