Difference between revisions of "GenDates.py"

From PeformIQ Upgrade
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
#!/usr/bin/env python
#!/usr/bin/env python
#
#
#  Purpose: Generate a date range
#  Purpose: Generate date range
#
#
#  $Id:$
#  $Id:$
Line 11: Line 11:


"""
"""
   Usage:  GenDates.py  [-v] [-d] [-D2] [-S <start_date> [-E <end_date>]]   
   Usage:  gen_date_range.py  [-v] [-d] [-D2] [-S <start_date> [-E <end_date>]]   


   ...
   ...
Line 20: Line 20:
import sys
import sys
import getopt
import getopt
import logging


#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
Line 28: Line 29:


__version__  = "1.0.0"
__version__  = "1.0.0"
__id__        = "@(#)  gen_dates.py  [%s]  2008-07-15"
__id__        = "@(#)  gen_date_range.py  [%s]  2008-07-15"


verbose_flg  = False
verbose_flg  = False
Line 43: Line 44:
                   6 : 'Sun'
                   6 : 'Sun'
                 }
                 }
START        = datetime(day=1, month=1, year=2007)


#===============================================================================
#===============================================================================
Line 56: Line 59:
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------


def gen_dates():
def date_range(start=None, end=None, no_days=None):
   d_start = datetime(day=1, month=1, year=2008)
 
   d_end  = datetime(day=5, month=5, year=2008)
   if start:
   d_now   = datetime.now()
      d_start = start
  else:
      d_start = START
 
  if end:
      d_end  = end
   elif no_days:
      d_end  = d_start + timedelta(days=no_days)
   else:
      d_end   = datetime.now()


   d = d_start
   d = d_start
Line 65: Line 77:
   while d < d_end:
   while d < d_end:
       dow = d.weekday()
       dow = d.weekday()
       if dow < 5:
       if dow < 5:
         print '%s,%s' %  (d.strftime("%d/%m/%Y"), DoW[dow])
         print '%s,%s' %  (d.strftime("%d/%m/%Y"), DoW[dow])
       d += timedelta(days=1)
       d += timedelta(days=1)


#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------


def gen_date_range():
def generate_for_date_range():
   dates = []
   dates = []


Line 90: Line 104:
   global debug_level
   global debug_level


#  try:
  start_date = None
#      terminal_type = os.environ["TERM"]
  end_date   = None
#  except KeyError, e:
  no_days    = None
#      print "Set TERM environment variable and rerun!"
#      return 1
 
#  wrk_path  = os.getcwd()
#  wrk_dir  = os.path.basename(wrk_path)
 
#   print "[gen_dates]  Working directory is %s" % wrk_path
 
#  data_dir = wrk_dir  + '/DATA/'
#  pid_path = data_dir + PIDFILE
 
#  os.chdir(data_dir)


   try:
   try:
       opts, args = getopt.getopt(argv, "dD:hn:vV?",
       opts, args = getopt.getopt(argv, "dD:E:hn:S:t:vV?",
                 ["debug", "debug_level=", "help", "no_days=", "verbose", "version"])
                 ["debug", "debug_level=", "end_date=", "help",
                  "no_days=", "start_date=", "verbose", "version"])
   except getopt.GetoptError:
   except getopt.GetoptError:
       usage()
       usage()
       sys.exit(2)
       return 2


   for opt, arg in opts:
   for opt, arg in opts:
       if opt in ("-d", "--debug"):
       if opt in ("-d", "--debug"):
         debug_level   += 1
         debug_level     += 1
         debug_flg = True
         debug_flg = True
       elif opt in ('-D', "--debug_level"):
       elif opt in ('-D', "--debug_level"):
         debug_level   = int(a)
         debug_level     = int(arg)
      elif opt in ('-n', "--no_days"):
        no_days          = int(arg)
       elif opt in ("-t", "--target_date"):
       elif opt in ("-t", "--target_date"):
         target_date = arg
         target_date     = datetime.strptime(arg, "%Y%m%d")
         date = datetime.datetime.strptime(target_date, "%Y%m%d")
      elif opt in ("-E", "--end_date"):
        print date
         end_date        = datetime.strptime(arg, "%Y%m%d")
      elif opt in ("-S", "--start_date"):
        start_date      = datetime.strptime(arg, "%Y%m%d")
       elif opt in ("-h", "-?", "--help"):
       elif opt in ("-h", "-?", "--help"):
         # print __doc__
         # print __doc__
         usage()
         usage()
         return 1
         return 1
      elif opt in ("-n", "--no_days"):
        no_days = int(arg)
       elif opt in ("-v", "--verbose"):
       elif opt in ("-v", "--verbose"):
         verbose_flg = True
         verbose_flg     = True


   if (debug_level > 0): print "Debugging level set to %d" % debug_level
   if (debug_level > 0): print "Debugging level set to %d" % debug_level


   #init()
   date_range(start=start_date, end=end_date, no_days=no_days)
 
  gen_dates()


   return 0
   return 0
Line 155: Line 158:
     Date    Who  Description
     Date    Who  Description
   --------  ---  ------------------------------------------------------------
   --------  ---  ------------------------------------------------------------
   20031014   plh  Initial implementation
   20060811   plh  Initial implementation


Problems to fix:
Problems to fix:
Line 167: Line 170:


[[Category:Python]]
[[Category:Python]]
[[Category:Examples]]

Latest revision as of 16:07, 19 July 2009

Script

#!/usr/bin/env python
#
#  Purpose:  Generate date range
#
#  $Id:$
#
#-------------------------------------------------------------------------------

"""
  Usage:  gen_date_range.py  [-v] [-d] [-D2] [-S <start_date> [-E <end_date>]]  

  ...
"""
#-------------------------------------------------------------------------------

import os
import sys
import getopt
import logging

#-------------------------------------------------------------------------------

from datetime import datetime, timedelta

#-------------------------------------------------------------------------------

__version__   = "1.0.0"
__id__        = "@(#)  gen_date_range.py  [%s]  2008-07-15"

verbose_flg   = False

debug_level   = 0

DoW           = {
                   0 : 'Mon',
                   1 : 'Tue',
                   2 : 'Wed',
                   3 : 'Thu',
                   4 : 'Fri',
                   5 : 'Sat',
                   6 : 'Sun'
                }

START         = datetime(day=1, month=1, year=2007)

#===============================================================================

def is_weekday(d):
   dow = d.weekday()

   if dow < 5:
      return True
   else:
      return False

#-------------------------------------------------------------------------------

def date_range(start=None, end=None, no_days=None):

   if start:
      d_start = start
   else:
      d_start = START

   if end:
      d_end   = end
   elif no_days:
      d_end   = d_start + timedelta(days=no_days)
   else:
      d_end   = datetime.now()

   d = d_start

   while d < d_end:
      dow = d.weekday()

      if dow < 5:
         print '%s,%s' %  (d.strftime("%d/%m/%Y"), DoW[dow])

      d += timedelta(days=1)

#-------------------------------------------------------------------------------

def generate_for_date_range():
   dates = []

   for n in range(no_days):
      d = date - datetime.timedelta(days=n)
      print d.strftime("%y%m%d")
      dates.append(d)

   # print date.strftime("%y%m%d")

   for d in dates:
      generate(d)

#===============================================================================

def main(argv):
   global verbose_flg
   global debug_level

   start_date = None
   end_date   = None
   no_days    = None

   try:
      opts, args = getopt.getopt(argv, "dD:E:hn:S:t:vV?",
                 ["debug", "debug_level=", "end_date=", "help",
                  "no_days=", "start_date=", "verbose", "version"])
   except getopt.GetoptError:
      usage()
      return 2

   for opt, arg in opts:
      if opt in ("-d", "--debug"):
         debug_level     += 1
         debug_flg = True
      elif opt in ('-D', "--debug_level"):
         debug_level      = int(arg)
      elif opt in ('-n', "--no_days"):
         no_days          = int(arg)
      elif opt in ("-t", "--target_date"):
         target_date      = datetime.strptime(arg, "%Y%m%d")
      elif opt in ("-E", "--end_date"):
         end_date         = datetime.strptime(arg, "%Y%m%d")
      elif opt in ("-S", "--start_date"):
         start_date       = datetime.strptime(arg, "%Y%m%d")
      elif opt in ("-h", "-?", "--help"):
         # print __doc__
         usage()
         return 1
      elif opt in ("-v", "--verbose"):
         verbose_flg      = True

   if (debug_level > 0): print "Debugging level set to %d" % debug_level

   date_range(start=start_date, end=end_date, no_days=no_days)

   return 0

#-------------------------------------------------------------------------------

if __name__ == '__main__' or __name__ == sys.argv[0]:
   try:
      sys.exit(main(sys.argv[1:]))
   except KeyboardInterrupt, e:
      print "[gen_dates]  Interrupted!"

#-------------------------------------------------------------------------------

"""
Revision History:

     Date     Who   Description
   --------   ---   ------------------------------------------------------------
   20060811   plh   Initial implementation

Problems to fix:

To Do:

Issues:

"""