code: def get_snodas_ds(dem_dt, code=1036):
      import tarfile
      import gzip
      snodas_ds = None
      snodas_url_str = None
      outdir = os.path.join(datadir, 'snodas')
      if not os.path.exists(outdir):
          os.makedirs(outdir)
      if dem_dt >= datetime(2003,9,30) and dem_dt < datetime(2010,1,1):
          snodas_url_str = 'ftp://sidads.colorado.edu/DATASETS/NOAA/G02158/masked/%Y/%m_%b/SNODAS_%Y%m%d.tar'
          tar_subfn_str_fmt = 'us_ssmv1%itS__T0001TTNATS%%Y%%m%%d05HP001.%s.gz'
      elif dem_dt >= datetime(2010,1,1):
          snodas_url_str = 'ftp://sidads.colorado.edu/DATASETS/NOAA/G02158/unmasked/%Y/%m_%b/SNODAS_unmasked_%Y%m%d.tar'
          tar_subfn_str_fmt = './zz_ssmv1%itS__T0001TTNATS%%Y%%m%%d05HP001.%s.gz'
      else:
          print("No SNODAS data available for input date")
      if snodas_url_str is not None:
          snodas_url = dem_dt.strftime(snodas_url_str)
          snodas_tar_fn = iolib.getfile(snodas_url, outdir=outdir)
          print("Unpacking")
          tar = tarfile.open(snodas_tar_fn)
          for ext in ('dat', 'Hdr'):
              tar_subfn_str = tar_subfn_str_fmt % (code, ext)
              tar_subfn_gz = dem_dt.strftime(tar_subfn_str)
              tar_subfn = os.path.splitext(tar_subfn_gz)[0]
              print(tar_subfn)
              if outdir is not None:
                  tar_subfn = os.path.join(outdir, tar_subfn)
              if not os.path.exists(tar_subfn):
                  tar.extract(tar_subfn_gz)
                  with gzip.open(tar_subfn_gz, 'rb') as f:
                      outf = open(tar_subfn, 'wb')
                      outf.write(f.read())
                      outf.close()
                  os.remove(tar_subfn_gz)
          bad_str = 'Created by module comment'
          snodas_fn = tar_subfn
          f = open(snodas_fn)
          output = []
          for line in f:
              if not bad_str in line:
                  output.append(line)
          f.close()
          f = open(snodas_fn, 'w')
          f.writelines(output)
          f.close()
          snodas_ds = gdal.Open(snodas_fn)
      return snodas_ds