def write_table(self,tablename,dsname=None,prefix=None,record=True,precision=None,args=(),makedir=False):
     t = getattr(self.rawdata,tablename,None)
     if t is None:
         methodname = 'list_'+tablename
         method = getattr(self,methodname,None)
         if method and callable(method):
             data = method(*args)
             t = Table(data=data,tablename=tablename,columns=getattr(self,'COLUMNS_'+tablename))
     if t is None:
         raise ValueError("Unable to find table '{}'".format(tablename))
     DataSource.write_table(t,dsname=dsname,prefix=prefix,tablename=tablename,precision=precision,makedir=makedir)
     if record:
         setattr(self.rawdata,tablename,t)
     return t