Python:Template

From wiki
Revision as of 13:02, 21 July 2019 by Hdridder (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Template for Python programs. Creating logfiles, standard modules to load, opening files, user configuration.

Code for mailing is on this wiki too.

ToDO:

  • Parsing commandline options
#!/usr/bin/env python

def usage():
    print ("Usage: "+__file__)
    print("Template for python programs")
    version = 'R1A, 20181010, Initial release'
    print("Version: "+version)
    sys.exit(1)


# USER CONFIGURABLE ITEMS

warning = 'If you need to modify these variables anywhere else you have to declare it global there'
filespec =  '*.*'
logfile2name = '<apath>_timestamp.txt'

# END USER CONFIGURABLE ITEMS, DO NOT CHANGE ANYTHING BELOW THIS LINE

import os
import sys
import re
import glob
import logging
from datetime import datetime
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")

logfile2name = logfile2name.replace('timestamp',timestamp)

def main():
    logfilename = openlog()
    openlog(<apath>)
    logging.info("This is in the logfile with generated name")
    openfile(filespec)

    return


def openfile(filespec):
    filelist = glob.glob(filespec)
    for filename in filelist:
        if os.path.isfile(filename):
            with open (filename,"r") as file:
                for line in file:
                    #remove newline characters
                    line.rstrip('\r\n')
                    <codeblock>
    return


def openlog (logfilename = ''):
    if logfilename == '':
        logfilename = re.sub('/bin/','/log/',__file__)
        logfilename += '_'+timestamp+'.log'
    logging.basicConfig(filename=logfilename,level=logging.DEBUG,format='%(asctime)s %(levelname)7s %(message)s')
    logging.info(logfilename+" open.")
    return(logfilename)


main()

Logging suggestion to test:

def logfunc(logFile):  
    logging.basicConfig(format = '%(asctime)s %(filename)25s %(levelname)6s : %(message)s' , level=logging.INFO)  
    log = logging.getLogger()  
    fh = logging.FileHandler(logFile)  
    formatter = logging.Formatter('%(asctime)s %(filename)25s %(levelname)6s : %(message)s')  
    fh.setFormatter(formatter)  
    log.addHandler(fh)  
    return log