code: def get_hosts_from_file(filename,
                          default_protocol='telnet',
                          default_domain='',
                          remove_duplicates=False,
                          encoding='utf-8'):
      
      # Open the file.
      if not os.path.exists(filename):
          raise IOError('No such file: %s' % filename)
  
      # Read the hostnames.
      have = set()
      hosts = []
      with codecs.open(filename, 'r', encoding) as file_handle:
          for line in file_handle:
              hostname = line.split('#')[0].strip()
              if hostname == '':
                  continue
              if remove_duplicates and hostname in have:
                  continue
              have.add(hostname)
              hosts.append(to_host(hostname, default_protocol, default_domain))
  
      return hosts
docs: Reads a list of hostnames from the file with the given name.
  
      :type  filename: string
      :param filename: A full filename.
      :type  default_protocol: str
      :param default_protocol: Passed to the Host constructor.
      :type  default_domain: str
      :param default_domain: Appended to each hostname that has no domain.
      :type  remove_duplicates: bool
      :param remove_duplicates: Whether duplicates are removed.
      :type  encoding: str
      :param encoding: The encoding of the file.
      :rtype:  list[Host]
      :return: The newly created host instances.