2017-08-24 42 views
0

我正在將我的工作Python移動到別人修訂的Python代碼中。我收到錯誤。我明白datetime.datetime會導致問題,但我想我已經嘗試過排列。在測試中,如果我在下面的行之前返回(),則沒有運行時錯誤。我很抱歉在帖子中的格式。我沒有正確認識到這一點。datetime.datetime.timedelta - 錯誤所有排列

Python版本2.7.12

import os, sys, re, datetime 
from datetime import datetime 

#NOTE:「從日期時間日期時間進口」註釋掉不改變所產生的錯誤,所以我認爲有些事情是進口,從地方。

這些是3個版本,並在運行時間所得到的錯誤消息」

dt = dt - datetime.timedelta(hours=24.5) # decrement date a day or two 

給出錯誤 「類型的對象 'datetime.datetime' 沒有屬性 'timedelta」'

dt = dt - datetime.datetime.timedelta(hours=24.5) # ; also error: 

給出錯誤「type object'datetime.datetime'沒有屬性'datetime'」

dt = dt - timedelta(hours=24.5) # ; also error: 

給出錯誤「全局名稱」timedelta'未定義「

回答

1

你說的註釋掉from datetime import datetime不會改變錯誤,但這不應該是這樣,它是問題的原因。

timedelta位於datetime模塊中。但是,因爲您已完成from datetime import datetime,所以名稱空間中的名稱datetime指的是datetime類,而不是模塊,並且不能用於直接獲取timedelta類的句柄。

刪除這條線,使datetime指模塊,你應該能夠訪問它datetime.timedelta

>>> import datetime 
>>> dt = datetime.datetime.now() 
>>> dt 
datetime.datetime(2017, 8, 24, 15, 10, 34, 942209) 
>>> dt = dt - datetime.timedelta(hours=24.5) 
>>> dt 
datetime.datetime(2017, 8, 23, 14, 40, 34, 942209) 

這裏試試:https://repl.it/KYDN/0

或者,你可以導入這兩個類和請直接參考:

>>> from datetime import datetime, timedelta 
>>> dt = datetime.now() 
>>> dt 
datetime.datetime(2017, 8, 24, 15, 14, 46, 340878) 
>>> dt = dt - timedelta(hours=24.5) 
>>> dt 
datetime.datetime(2017, 8, 23, 14, 44, 46, 340878) 
+0

謝謝。我使用「alternate」來進一步隔離我的代碼和我添加的東西,我在函數內部使用了「來自datetime import datetime,timedelta」。我認爲這將隔離我的功能和我將我的功能粘貼在一起的代碼。我不知道這是否會起作用,但只是試一試很容易。 我不是面向對象的。 我不明白所發生的一切,但我知道你爲我提供了一個工作解決方案! – CL1