21

以下は私が取り組んでいるコードです。私が知る限り、問題はありませんが、コードを実行しようとするとエラーが発生します。

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

エラーは次のとおりです。

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

どんな助けでも大歓迎です。

4

4 に答える 4

51

datetime をインポートしましたが、timedelta を定義していません。次のいずれかが必要です。

from datetime import timedelta

また:

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

また、goback パラメーターは文字列として定義されていますが、それを時間数として timedelta に渡します。それを整数に変換するかtype、オプションの引数をint代わりに設定する必要があります。

于 2013-05-28T01:48:09.177 に答える
2

がある場合は、その前timedeltaに置く必要があるdatetime.ため、実際にはdatetime.timedelta

于 2013-05-28T01:50:18.543 に答える
2

そのはずdatetime.timedelta

于 2013-05-28T01:48:20.893 に答える