Search code examples
pythonoptparse

Unable to pass argument to the python using Optparse


i have written this python program. whenever i run the script using parameters like

python script.py -t It returns me current time in unixtime.

but whenever i try to pass an argument like

python script.py -c 1325058720 It says LMT is not defined. So i removed the LMT from the

LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())

Then it just skip my argument and returns the current time in Localtime.

Can someone please help me to pass an argument in the LMT and convert it to Readable time format. I need to pass an argument to it and see the output in the localtime readable format

import optparse
import re
import time


GMT = int(time.time())
AMT = 123456789
LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(LMT))


VERBOSE=False
def report(output,cmdtype="UNIX COMMAND:"):
   #Notice the global statement allows input from outside of function
   if VERBOSE:
       print "%s: %s" % (cmdtype, output)
   else:
       print output

#Function to control option parsing in Python
def controller():
    global VERBOSE
    p = optparse.OptionParser()
    p.add_option('--time', '-t', action="store_true", help='gets current time in epoch')
    p.add_option('--nums', '-n', action="store_true", help='gets the some random number')
    p.add_option('--conv', '-c', action="store_true", help='convert epoch to readable')
    p.add_option('--verbose', '-v',
                action = 'store_true',
                help='prints verbosely',
                default=False)
    #Option Handling passes correct parameter to runBash
    options, arguments = p.parse_args()
    if options.verbose:
     VERBOSE=True
    if options.time:
        value = GMT
        report(value, "GMT")
    elif options.nums:
        value = AMT
        report(value, "AMT")
    elif options.conv:
        value = LMT
        report(value, "LMT")
    else:
        p.print_help()

Solution

  • I was wrong to access the variable outside the function which didn't clicked me.

     elif options.conv:
            LMT = options.conv
            LMT= float(LMT)
            LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(LMT))
            print '%s'% LMT