code: def run(self):
          
          # Try to create the directory
          if not os.path.exists(self.output):
              try:
                  os.mkdir(self.output)
              except:
                  print 'failed to create output directory %s' % self.output
  
          # Be sure it is a directory
          if not os.path.isdir(self.output):
              print 'invalid output directory %s' % self.output
              sys.exit(1)
  
          # Create the CSV handlers
          visitors = [
              _CompaniesCSV(self.output),
              _ActivitiesCSV(self.output),
              _ActivitiesSeenCSV(self.output),
              _QSACSV(self.output),
          ]
  
          # Run by each company populating the CSV files
          for path in glob.glob(os.path.join(self.input, '*.json')):
              with open(path, 'r') as f:
                  try:
                      data = json.load(f, encoding='utf-8')
                  except ValueError:
                      continue
  
                  for visitor in visitors:
                      visitor.visit(data)
docs: Reads data from disk and generates CSV files.