[英]Unable to use datetime.strptime with from datetime import datetime
我對以前可以使用的某些代碼感到困惑(昨天)。 使用python 2.7.6
我有
from datetime import datetime
openfor = (datetime.strptime(row[1],"%Y-%m-%d %H:%M:%S") - datetime.strptime(row[2], "%Y-%m-%d %H:%M:%S")).total_seconds()
並返回所需的值。 從今天早上開始
AttributeError: 'module' object has no attribute 'strptime'
如果我使用以下內容,則無論有無導入都可以。
openfor = (datetime.datetime.strptime(row[1],"%Y-%m-%d %H:%M:%S") - datetime.datetime.strptime(row[2], "%Y-%m-%d %H:%M:%S")).total_seconds()
這沒什么大不了的,因為它可以工作,但是代碼看起來丑陋,引起了我的好奇心。 那么關於為什么這將停止工作的任何建議? 以及如何解決? 謝謝
根據評論,導入聲明
from pylab import *
是問題的原因。 這將導入pylab
並將 pylab
命名空間中的所有名稱復制到當前模塊的全局命名空間中。 datetime
是以下名稱之一:
In [188]: import pylab
In [189]: 'datetime' in dir(pylab)
Out[189]: True
因此, datetime
被重新分配給模塊而不是類。
之間的某個地方
from datetime import datetime
和
openfor = (datetime.strptime(row[1],"%Y-%m-%d %H:%M:%S") - datetime.strptime(row[2], "%Y-%m-%d %H:%M:%S")).total_seconds()
datetime
被重新定義為等於模塊datetime
而不是類datetime.datetime
。 導致此問題的原因是您尚未發布的代碼中。 (但是,導入語句import datetime
可能是罪魁禍首。還要注意不要from module import *
,因為這可能會使用來自另一個模塊的名稱污染調用模塊的名稱空間。其中可能包括datetime
。)
順便說一句, 一些專家建議不要使用
from module import function
而是始終只導入模塊:
import module # or
import module as foo
盡管這可能是一種風格選擇,但遵守此規則可以使一切都從何而來非常清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.