Klaus Neuner wrote:
Hello,

I am writing a program that analyzes files of different formats. I
would like to use a function for each format. Obviously, functions can
be mapped to file formats. E.g. like this:

if file.endswith('xyz'):
    xyz(file)
elif file.endswith('abc'):
    abc(file)

...

Yet, I would prefer to do something of the following kind:

func = file[-3:]
apply_func(func, file)

Can something of this kind be done in Python?

Klaus

You won't need anything else than defining the proper function to support the extension with the following code:


import os

class Handlers:

   class NoHandler(Exception):
       pass
@staticmethod
   def txt(fileName):
       print 'I am processing a txt file'

   @staticmethod
   def tar(fileName):
       print 'I am processing a tar file'

   @classmethod
   def default(cls, fileName):
       raise cls.NoHandler("I don't know how to handle %s " % fileName)

for fileName in ['/tmp/test.txt', '/tmp/sdfsd.sfds']:
   _, extension = os.path.splitext(fileName)
   func = getattr(Handlers, extension.replace('.', ''), Handlers.default)
   try:
       func(fileName)
   except Handlers.NoHandler, exc:
       print exc


JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to