web-dev-qa-db-ja.com

Timedeltaが定義されていません

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

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

どんな助けでもいただければ幸いです。

13
Mitchell

日時をインポートしましたが、timedeltaを定義していません。あなたはどちらかが欲しい:

from datetime import timedelta

または:

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

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

29
Peter DeGlopper

timedeltaがある場合は、その前にdatetime.を付ける必要があるため、実際にはdatetime.timedeltaになります。

2
Zamphatta

そのはず datetime.timedelta

1
jamylak

この問題は、私の頑固な行動の一部で発生する可能性があることがわかりました。 datetime.pyという名前のファイルを作成し、ファイルの名前を変更しても、datetime.pycはフォルダーに残します...したがって、dateimeをインポートするすべてのファイルがこのファイルを使用し、timedeltaが見つかりません。 file:datetime.pycを削除すると、機能します。

0
FisherMartyn