code: def touch(args):
      
      from time import ctime
  
      p = OptionParser(touch.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      info, = args
      fp = open(info)
      for row in fp:
          path, atime, mtime = row.split()
          atime = float(atime)
          mtime = float(mtime)
          current_atime, current_mtime = get_times(path)
  
          # Check if the time has changed, with resolution up to 1 sec
          if int(atime) == int(current_atime) and \
             int(mtime) == int(current_mtime):
              continue
  
          times = [ctime(x) for x in (current_atime, current_mtime, atime, mtime)]
          msg = "{0} : ".format(path)
          msg += "({0}, {1}) => ({2}, {3})".format(*times)
          print(msg, file=sys.stderr)
          os.utime(path, (atime, mtime))
docs: %prog touch timestamp.info
  
      Recover timestamps for files in the current folder.
      CAUTION: you must execute this in the same directory as timestamp().