以下は私が取り組んでいるコードです。私の知る限り、問題はありませんが、コードを実行しようとするとエラーが発生します。
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
どんな助けでもいただければ幸いです。
日時をインポートしましたが、timedeltaを定義していません。あなたはどちらかが欲しい:
from datetime import timedelta
または:
subtract = datetime.timedelta(hours=options.goback)
また、gobackパラメーターは文字列として定義されていますが、それを時間数としてtimedeltaに渡します。整数に変換する必要があります。または、オプションのtype
引数を代わりにint
に設定することをお勧めします。
timedelta
がある場合は、その前にdatetime.
を付ける必要があるため、実際にはdatetime.timedelta
になります。
そのはず datetime.timedelta
この問題は、私の頑固な行動の一部で発生する可能性があることがわかりました。 datetime.pyという名前のファイルを作成し、ファイルの名前を変更しても、datetime.pycはフォルダーに残します...したがって、dateimeをインポートするすべてのファイルがこのファイルを使用し、timedeltaが見つかりません。 file:datetime.pycを削除すると、機能します。