#python #datetime #python-3.7 #python-datetime
Вопрос:
У меня есть модуль, который содержит метку времени, используемую другими функциями в модуле
import datetime, time
from datetime import date, timedelta, datetime
def tsp(): #Timestamp
return datetime.now().strftime("%x %X") 'n'
Если этот же код включен непосредственно в качестве функции в записную книжку jupyter, он работает.
import datetime, time
from datetime import date, timedelta, datetime
def tsp(full=False): #Timestamp
return datetime.now().strftime("%x %X") 'n'
#import test_tsp
#from test_tsp import *
print('Hello ' tsp())
Здравствуйте 15.10.2011 15:59:05
Закомментируйте «def» и раскомментируйте 2 инструкции импорта, и появится сообщение об ошибке:
23 def tsp(): #Timestamp
---> 24 return datetime.now().strftime("%x %X") 'n'
25
AttributeError: module 'datetime' has no attribute 'now'
Я пробовал datetime.datetime.now()
, datetime.now()
, и now()
. Та же ошибка. python версии 3.7
Комментарии:
1. Если у вас есть
from datetime import ...
, то вам не нужноimport datetime
2.
datetime.datetime.now()
3. Это правда.
import datetime as dt
это мое 100% решение, и оно просто позволяет избежать двусмысленности4. Я бы хотел, чтобы класс
datetime
не был в модуле с таким же именемdatetime
. Имя модуля в порядке (хотяdatetimeutils
могло бы быть более описательным); имя класса должно было быть примерно такимDateTime
.5. если вы используете
import datetime
, то вы должны использоватьdatetime.datetime.now()
. Если вы импортируетеfrom datetime import datetime
, то вам следует использоватьdatetime.now()
. Но может быть и другая проблема — у вас может быть собственный файлdatetime.py
, и он может импортировать ваш файл, но не может быть найденnow()
в вашем файле. Вам следует проверитьprint( datetime.__file__ )
, используете ли вы собственный файл или модульdatetime
. Если у вас есть файл onwdatetime.py
, вам придется его переименовать.