python "import datetime" vs "из datetime import datetime"

У меня есть сценарий, который должен выполнять следующие строки в разных строках в сценарии:

today_date = datetime.date.today() date_time = datetime.strp(date_time_string, '%Y-%m-%d %H:%M') 

В моих операторах импорта у меня есть следующее:

 from datetime import datetime import datetime 

Я получаю следующую ошибку:

 AttributeError: 'module' object has no attribute 'strp' 

Если я изменил порядок операторов импорта:

 import datetime from datetime import datetime 

Я получаю следующую ошибку:

 AttributeError: 'method_descriptor' object has no attribute 'today' 

Если я снова изменил оператор импорта:

 import datetime 

Я получаю следующую ошибку:

 AttributeError: 'module' object has no attribute 'strp' 

Что здесь происходит и как мне заставить работать? Ценить это. Спасибо.

  • как конвертировать ежемесячные данные в квартал в пандах
  • Лучший вариант для Google App Engine Datastore и внешней базы данных?
  • Каков самый быстрый способ HTTP GET в Python?
  • Множественное построение набора данных с помощью matplotlib.pyplot.plot_date
  • Django Получить всех пользователей
  • Разница между определением члена в __init__ и его определением в классе класса в python?
  • Выравнивание проверяемых элементов в qTableWidget
  • повторно импортировать модуль-под-тестом, чтобы потерять контекст
  • 5 Solutions collect form web for “python "import datetime" vs "из datetime import datetime"”

    Ваша проблема в том, что у вас есть код, который ожидает, что datetime будет ссылкой на модуль datetime и другой код, который ожидает, что datetime будет ссылкой на класс datetime . Очевидно, это не может быть и то, и другое.

    Когда вы выполните:

     from datetime import datetime import datetime 

    Сначала вы устанавливаете datetime для ссылки на класс, а затем сразу же устанавливаете его как ссылку на модуль. Когда вы делаете это наоборот, это одно и то же, но в конечном итоге это ссылка на класс.

    Вам нужно переименовать одну из этих ссылок. Например:

     import datetime as dt from datetime import datetime 

    Затем вы можете изменить ссылки в форме datetime.xxxx которые ссылаются на модуль на dt.xxxx .

    Или просто import datetime и время и измените все ссылки на использование имени модуля. Другими словами, если что-то просто говорит datetime(...) вам нужно изменить эту ссылку на datetime.datetime .

    К сожалению, у Python, к сожалению, есть такая штука в своей библиотеке. Если они выполняли свои собственные правила именования в PEP 8 , класс datetime был бы назван Datetime и не было бы проблем с использованием как datetime и модуля, а Datetime для класса.

    Вы не можете использовать оба утверждения; модуль datetime содержит тип datetime . Местное имя datetime в вашем собственном модуле может относиться только к тому или иному.

    Используйте только import datetime , а затем убедитесь, что вы всегда используете datetime.datetime для обращения к содержащемуся типу:

     import datetime today_date = datetime.date.today() date_time = datetime.datetime.strptime(date_time_string, '%Y-%m-%d %H:%M') 

    Теперь datetime является модулем, и через это вы ссылаетесь на содержащиеся в нем типы.

    Кроме того, импортируйте все необходимые вам модули из модуля:

     from datetime import date, datetime today_date = date.today() date_time = datetime.strptime(date_time_string, '%Y-%m-%d %H:%M') 

    Здесь datetime является типом модуля. date – это другой тип, из того же модуля.

    datetime – это модуль, который содержит тип, который также называется datetime . Кажется, вы хотите использовать оба, но вы пытаетесь использовать одно и то же имя для ссылки на оба. Тип и модуль – две разные вещи, и вы не можете ссылаться на оба из них с именем datetime в вашей программе.

    Если вам нужно использовать что-либо из модуля, кроме типа datetime (как вы, по-видимому, делаете), вам необходимо импортировать модуль с import datetime . Затем вы можете обратиться к типу «дата» как datetime.date а тип datetime.datetime как datetime.datetime .

    Вы также можете сделать это:

     from datetime import datetime, date today_date = date.today() date_time = datetime.strp(date_time_string, '%Y-%m-%d %H:%M') 

    Здесь вы импортируете только нужные вам имена (типы данных и даты) и импортируете их напрямую, чтобы вам вообще не нужно ссылаться на сам модуль.

    В конечном счете вам нужно решить, какие имена нужно использовать в модуле, и как лучше всего их использовать. Если вы используете только одну или две вещи из модуля (например, только date и типы date и datetime ), может быть легко импортировать эти имена напрямую. Если вы используете много вещей, вероятно, лучше импортировать модуль и получить доступ к вещам внутри него с помощью точечного синтаксиса, чтобы избежать загромождения вашего глобального пространства имен именами, специфичными для даты.

    Также обратите внимание, что если вы импортируете имя самого модуля, вы можете сократить имя, чтобы упростить ввод текста:

     import datetime as dt today_date = dt.date.today() date_time = dt.datetime.strp(date_time_string, '%Y-%m-%d %H:%M') 

    Разница между datetime datetime import и нормальным временем импорта datetime заключается в том, что вы имеете дело с модулем за один раз и классом на другом.

    Функция strptime существует только в классе datetime, поэтому вам нужно импортировать класс с модулем, иначе вам придется дважды указывать дату и время при вызове этой функции.

    Дело в том, что имя класса и имя модуля получили одно и то же имя, поэтому он создает немного недоумения.

    попробуй это:

     import datetime from datetime import datetime as dt today_date = datetime.date.today() date_time = dt.strptime(date_time_string, '%Y-%m-%d %H:%M') 

    strp () не существует. Я думаю, вы имеете в виду strptime.

    Python - лучший язык программирования в мире.