Difference between revisions of "Skel.py"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) |
PeterHarding (talk | contribs) |
||
| Line 1: | Line 1: | ||
My skeleton Python script... | My skeleton Python script... | ||
==Version== | =Version Incorporating Python Logging= | ||
<pre> | |||
#!/usr/bin/env python | |||
# | |||
# Purpose: Skeleton Python script | |||
# | |||
# $Id:$ | |||
# | |||
#------------------------------------------------------------------------------- | |||
""" | |||
Skeleton Python script | |||
... | |||
""" | |||
#------------------------------------------------------------------------------- | |||
import os | |||
import re | |||
import sys | |||
import getopt | |||
import logging | |||
#------------------------------------------------------------------------------- | |||
from datetime import datetime | |||
#------------------------------------------------------------------------------- | |||
__version__ = "1.0.0" | |||
__id__ = "@(#) skel.py [%s] 2008-05-03" | |||
debug_level = 0 | |||
verbose_flg = False | |||
LOGFILE = "log/skel.log" | |||
PIDFILE = "DATA/skel.pid" | |||
tables = [] | |||
log = None | |||
pid = None | |||
#=============================================================================== | |||
def INFO(msg): | |||
if log: log.info(' ' + msg) | |||
if verbose_flg: print "[skel] %s" % msg | |||
#------------------------------------------------------------------------------- | |||
def ERROR(msg): | |||
if log: log.error(msg) | |||
sys.stderr.write('[skel] %s\n' % msg) | |||
#------------------------------------------------------------------------------- | |||
def WARNING(msg): | |||
if log: log.warning('*****' + msg + '*****') | |||
if verbose_flg: print "[skel] %s" % msg | |||
#=============================================================================== | |||
def init(): | |||
global log | |||
global pid | |||
pid = os.getpid() | |||
log = logging.getLogger('skel') | |||
hdlr = logging.FileHandler(LOGFILE) | |||
fmtr = logging.Formatter('%(asctime)s %(levelname)s %(message)s') | |||
hdlr.setFormatter(fmtr) | |||
log.addHandler(hdlr) | |||
log.setLevel(logging.INFO) | |||
INFO("Started processing with PID %d" % pid) | |||
if (not verbose_flg): | |||
INFO("PID is %d" % pid) | |||
#=============================================================================== | |||
def the_time(): | |||
t = float(ref_time(False)) * 0.001 | |||
return t | |||
#------------------------------------------------------------------------------ | |||
t_reference = None | |||
def ref_time(flg): | |||
global t_reference | |||
t_now = datetime.now() | |||
if (flg): | |||
t_reference = t_now | |||
t = 0 | |||
else: | |||
t_delta = t_now - t_reference | |||
t = ((t_delta.seconds * 1000000) + t_delta.microseconds)/1000.0 | |||
return t | |||
#=============================================================================== | |||
def main(): | |||
global verbose_flg | |||
global debug_level | |||
try: | |||
opts, args = getopt.getopt(sys.argv[1:], "dD:vVw?") | |||
except getopt.error, msg: | |||
print __doc__ | |||
return 1 | |||
try: | |||
terminal_type = os.environ["TERM"] | |||
except KeyError, e: | |||
print "Set TERM environment variable and rerun!" | |||
return 1 | |||
wrk_path = os.getcwd() | |||
wrk_dir = os.path.basename(wrk_path) | |||
data_dir = wrk_dir + '/DATA/' | |||
pid_path = data_dir + PIDFILE | |||
# os.chdir(data_dir) | |||
for o, a in opts: | |||
if o == '-d': | |||
debug_level += 1 | |||
elif o == '-D': | |||
debug_level = int(a) | |||
elif o == '-v': | |||
verbose_flg = True | |||
elif o == '-V': | |||
print "[skel] Version: %s" % __version__ | |||
return 1 | |||
elif o == '-?': | |||
print __doc__ | |||
return 1 | |||
print "[skel] Working directory is %s" % os.getcwd() | |||
if (debug_level > 0): print "Debugging level set to %d" % debug_level | |||
if args: | |||
for arg in args: | |||
print arg | |||
init() | |||
return 0 | |||
#------------------------------------------------------------------------------- | |||
if __name__ == '__main__' or __name__ == sys.argv[0]: | |||
try: | |||
sys.exit(main()) | |||
except KeyboardInterrupt, e: | |||
print "[skel] Interrupted!" | |||
#------------------------------------------------------------------------------- | |||
""" | |||
Revision History: | |||
Date Who Description | |||
-------- --- ------------------------------------------------------------ | |||
20031014 plh Initial implementation | |||
Problems to fix: | |||
To Do: | |||
Issues: | |||
""" | |||
</pre> | |||
=Version Incorporating Dates= | |||
<pre> | <pre> | ||
| Line 57: | Line 243: | ||
import sys | import sys | ||
import getopt | import getopt | ||
#--------------------------------------------------------------------- | |||
debug_level = 0 | |||
verbose_flg = True | |||
#--------------------------------------------------------------------- | #--------------------------------------------------------------------- | ||
| Line 79: | Line 270: | ||
def main(): | def main(): | ||
global debug_flg | global debug_flg | ||
global verbose_flg | global verbose_flg | ||
if None: | if None: | ||
| Line 96: | Line 281: | ||
try: | try: | ||
opts, args = getopt.getopt(sys.argv[1:], " | opts, args = getopt.getopt(sys.argv[1:], "dD:E:S:vVY?") | ||
except getopt.error, msg: | except getopt.error, msg: | ||
print __doc__ | print __doc__ | ||
| Line 109: | Line 294: | ||
print __doc__ | print __doc__ | ||
return 1 | return 1 | ||
elif o == '-d': | elif o == '-d': | ||
debug_level += 1 | |||
elif o == '-D': | elif o == '-D': | ||
date = to_datetime(a) | date = to_datetime(a) | ||
elif o == '-E': | elif o == '-E': | ||
end_date = to_datetime(a) | end_date = to_datetime(a) | ||
elif o == '-S': | elif o == '-S': | ||
start_date = to_datetime(a) | start_date = to_datetime(a) | ||
elif o == '-Y': | elif o == '-Y': | ||
date = datetime.date.today() - datetime.timedelta(days=1) | date = datetime.date.today() - datetime.timedelta(days=1) | ||
elif o == '-v': | elif o == '-v': | ||
verbose_flg = | verbose_flg = True | ||
elif o == '-V': | elif o == '-V': | ||
print "Version: %s" % __version__ | print "Version: %s" % __version__ | ||
| Line 142: | Line 317: | ||
if __name__ == '__main__' or __name__ == sys.argv[0]: | if __name__ == '__main__' or __name__ == sys.argv[0]: | ||
sys.exit(main()) | try: | ||
sys.exit(main()) | |||
except KeyboardInterrupt, e: | |||
print "[skel] Interrupted!" | |||
#--------------------------------------------------------------------- | #--------------------------------------------------------------------- | ||
| Line 163: | Line 341: | ||
</pre> | </pre> | ||
=Another Version= | |||
<pre> | <pre> | ||
Revision as of 18:03, 2 May 2008
My skeleton Python script...
Version Incorporating Python Logging
#!/usr/bin/env python
#
# Purpose: Skeleton Python script
#
# $Id:$
#
#-------------------------------------------------------------------------------
"""
Skeleton Python script
...
"""
#-------------------------------------------------------------------------------
import os
import re
import sys
import getopt
import logging
#-------------------------------------------------------------------------------
from datetime import datetime
#-------------------------------------------------------------------------------
__version__ = "1.0.0"
__id__ = "@(#) skel.py [%s] 2008-05-03"
debug_level = 0
verbose_flg = False
LOGFILE = "log/skel.log"
PIDFILE = "DATA/skel.pid"
tables = []
log = None
pid = None
#===============================================================================
def INFO(msg):
if log: log.info(' ' + msg)
if verbose_flg: print "[skel] %s" % msg
#-------------------------------------------------------------------------------
def ERROR(msg):
if log: log.error(msg)
sys.stderr.write('[skel] %s\n' % msg)
#-------------------------------------------------------------------------------
def WARNING(msg):
if log: log.warning('*****' + msg + '*****')
if verbose_flg: print "[skel] %s" % msg
#===============================================================================
def init():
global log
global pid
pid = os.getpid()
log = logging.getLogger('skel')
hdlr = logging.FileHandler(LOGFILE)
fmtr = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(fmtr)
log.addHandler(hdlr)
log.setLevel(logging.INFO)
INFO("Started processing with PID %d" % pid)
if (not verbose_flg):
INFO("PID is %d" % pid)
#===============================================================================
def the_time():
t = float(ref_time(False)) * 0.001
return t
#------------------------------------------------------------------------------
t_reference = None
def ref_time(flg):
global t_reference
t_now = datetime.now()
if (flg):
t_reference = t_now
t = 0
else:
t_delta = t_now - t_reference
t = ((t_delta.seconds * 1000000) + t_delta.microseconds)/1000.0
return t
#===============================================================================
def main():
global verbose_flg
global debug_level
try:
opts, args = getopt.getopt(sys.argv[1:], "dD:vVw?")
except getopt.error, msg:
print __doc__
return 1
try:
terminal_type = os.environ["TERM"]
except KeyError, e:
print "Set TERM environment variable and rerun!"
return 1
wrk_path = os.getcwd()
wrk_dir = os.path.basename(wrk_path)
data_dir = wrk_dir + '/DATA/'
pid_path = data_dir + PIDFILE
# os.chdir(data_dir)
for o, a in opts:
if o == '-d':
debug_level += 1
elif o == '-D':
debug_level = int(a)
elif o == '-v':
verbose_flg = True
elif o == '-V':
print "[skel] Version: %s" % __version__
return 1
elif o == '-?':
print __doc__
return 1
print "[skel] Working directory is %s" % os.getcwd()
if (debug_level > 0): print "Debugging level set to %d" % debug_level
if args:
for arg in args:
print arg
init()
return 0
#-------------------------------------------------------------------------------
if __name__ == '__main__' or __name__ == sys.argv[0]:
try:
sys.exit(main())
except KeyboardInterrupt, e:
print "[skel] Interrupted!"
#-------------------------------------------------------------------------------
"""
Revision History:
Date Who Description
-------- --- ------------------------------------------------------------
20031014 plh Initial implementation
Problems to fix:
To Do:
Issues:
"""
Version Incorporating Dates
#!/usr/bin/env python
#
# Author: Peter Harding <plh@performiq.com.au>
#
# PerformIQ Pty. Ltd.
# Level 6,
# 170 Queen Street,
# MELBOURNE, VIC, 3000
#
# Phone: 03 9641 2222
# Fax: 03 9641 2200
# Mobile: 0418 375 085
#
# Copyright (C) PerformIQ Pty Ltd, 1992-2005
# All rights reserved
#
# @(#) [1.0.01] skel.py 2006-03-07
#
#
# NAME
# skel.py - Sample script
#
# SYNOPSIS
# skel.py [-dv] [-D <DATE>|-S <STARTDATE>|-E <ENDDATE>]
#
# PARAMETERS
# -D <DATE> Date (in ISO format
# -d Debug
# -v Verbose
#
# DESCRIPTION
# ...
#
# RETURNS
# 0 for successful completion, 1 for any error
#
# FILES
# ...
#
# $Id:$
#
#---------------------------------------------------------------------
"""
...
"""
#---------------------------------------------------------------------
import sys
import getopt
#---------------------------------------------------------------------
debug_level = 0
verbose_flg = True
#---------------------------------------------------------------------
def is_weekday(dow):
if ((dow >= 0) and (dow <=4)):
return 1
else:
return 0
#---------------------------------------------------------------------
def to_datetime(date):
date = int(date)
mday = date % 100
month = ( date % 10000) / 100
year = date / 10000
return datetime.date(day=mday, month=month, year=year)
#---------------------------------------------------------------------
def main():
global debug_flg
global verbose_flg
if None:
try:
userId = os.environ['USER']
except:
print "***** USER environment variable not set"
# sys.exit(0)
try:
opts, args = getopt.getopt(sys.argv[1:], "dD:E:S:vVY?")
except getopt.error, msg:
print __doc__
return 1
date = None
start_date = None
end_date = None
for o, a in opts:
if o == '-?':
print __doc__
return 1
elif o == '-d':
debug_level += 1
elif o == '-D':
date = to_datetime(a)
elif o == '-E':
end_date = to_datetime(a)
elif o == '-S':
start_date = to_datetime(a)
elif o == '-Y':
date = datetime.date.today() - datetime.timedelta(days=1)
elif o == '-v':
verbose_flg = True
elif o == '-V':
print "Version: %s" % __version__
return 1
else:
return 1
return 1
#---------------------------------------------------------------------
if __name__ == '__main__' or __name__ == sys.argv[0]:
try:
sys.exit(main())
except KeyboardInterrupt, e:
print "[skel] Interrupted!"
#---------------------------------------------------------------------
"""
Revision History:
Date Who Description
-------- --- --------------------------------------------------
20030920 plh Initial implementation
20031002 plh Cleaned up args in main(). Added '-h', '-?', '-V'
Problems to fix:
To Do:
Issues:
"""
Another Version
#!/usr/bin/env python
#
# Author: Peter Harding <plh@pha.com.au>
# Peter Harding & Associates Pty. Ltd.
# Level 6,
# 170 Queen Street,
# MELBOURNE, VIC, 3000
#
# Phone: 03 9641 2222
# Fax: 03 9641 2200
# Mobile: 0418 375 085
#
# Purpose: Skeleton python script
#
#
# Copyright (C) Peter Harding, 2003
# All rights reserved
#
# $Id: skel.py,v 1.1.1.1 2003/10/22 11:57:35 zyx Exp $
#
#---------------------------------------------------------------------
"""
Skeleton Python Framework
Usage: skel.py -g <no> -v
The '-g <no>' option is used to specify the number of groups.
The '-v' turns on verbose mode.
"""
#---------------------------------------------------------------------
import os
import sys
import getopt
import string
import whrandom
#---------------------------------------------------------------------
__version__ = "1.0.0"
wrk = None
no = None
#---------------------------------------------------------------------
def process():
pass
#---------------------------------------------------------------------
def main():
global debugFlg
global no
global verboseFlg
try:
opts, args = getopt.getopt(sys.argv[1:], "dg:vV?")
except getopt.error, msg:
print __doc__,
return 1
for o, a in opts:
if o == '-d':
debugFlg = 1
elif o == '-g':
no = int(a)
elif o == '-v':
verboseFlg = 1
elif o == '-V':
print "Version: %s" % __version__
return 0
elif o == '-?':
print __doc__()
return 0
if args:
for arg in args:
process arg
global wrk
wrk = os.getcwd()
process()
#---------------------------------------------------------------------
if __name__ == '__main__' or __name__ == sys.argv[0]:
sys.exit(main())
#---------------------------------------------------------------------
"""
Revision History:
Date Who Description
-------- --- --------------------------------------------------
20030920 plh Initial implementation
20031002 plh Cleaned up args in main(). Added '-h', '-?', '-V'
Problems to fix:
To Do:
Issues:
"""