Below is the code I am working on. From what I can tell there is no issue, but when I attempt to run the piece of code I receive an error.

import os import datetime def parseOptions(): import optparse parser = optparse.OptionParser(usage= '-h') parser.add_option('-t', '--type', \ choices= ('Warning', 'Error', 'Information', 'All'), \ help= 'The type of error', default= 'Warning') parser.add_option('-g', '--goback', \ type= 'string') (options, args) = parser.parse_args() return options options = parseOptions() now = datetime.datetime.now() subtract = timedelta(hours=options.goback) difference = now - subtract if options.type=='All' and options.goback==24: os.startfile('logfile.htm') else: print print 'Type =', options.type, print print 'Go Back =', options.goback,'hours' print difference.strftime("%H:%M:%S %a, %B %d %Y") print 

Error is as followed:

Traceback (most recent call last): File "C:\Python27\Lib\SITE-P~1\PYTHON~2\pywin\framework\scriptutils.py", line 325, in RunScript exec codeObject in __main__.__dict__ File "C:\Users\user\Desktop\Python\python.py", line 19, in <module> subtract = timedelta(hours=options.goback) NameError: name 'timedelta' is not defined 

Any help would be appreciated.

4 Answers

You've imported datetime, but not defined timedelta. You want either:

from datetime import timedelta 

or:

subtract = datetime.timedelta(hours=options.goback) 

Also, your goback parameter is defined as a string, but then you pass it to timedelta as the number of hours. You'll need to convert it to an integer, or better still set the type argument in your option to int instead.

3

It should be datetime.timedelta

Where you have timedelta, you need to put datetime. before it, so it's actually datetime.timedelta

I find this problem may occur in some of my sutpid action. I create a file named datetime.py and even I rename the file, I still leave the datetime.pyc in the folder... So every file that import dateime will use this file and timedelta cannot be found. After I delete the file:datetime.pyc, It works.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.