Как создать имя файла с текущей датой и временем в python?

Вот функциональный код (с успехом создайте файл)

sys.stdout = open('filename1.xml', 'w')

Теперь я пытаюсь назвать файл текущим временем даты (я не эксперт в python)

filename1 = datetime.now().strftime("%Y%m%d-%H%M%S")
sys.stdout = open(filename1 + '.xml', 'w')

Я хочу записать имя файла с точной датой и временем, это xml файл, который программа уже создала, мне просто нужно указать файл. Вышеуказанный код не работает.

[EDITED] - ошибка возвращена

  File "./fix.py", line 226, in <module>
    filenames = datetime.now().strftime("%Y%m%d-%H%M%S")
AttributeError: 'module' object has no attribute 'now'

Ответ 1

Пока вы не используете datetime, это решает вашу проблему (отвечает на ваш вопрос) о получении строки с указанным вами текущим форматом времени и даты:

import time
timestr = time.strftime("%Y%m%d-%H%M%S")
print timestr

дает:

20120515-155045

чтобы ваше имя файла могло добавить или использовать эту строку.

Ответ 2

now - метод класса в классе datetime в модуле datetime. Поэтому вам нужно

datetime.datetime.now()

Или вы можете использовать другой импорт

from datetime import datetime

Этот способ позволяет использовать datetime.now в соответствии с кодом в вопросе.

Ответ 3

Измените эту строку

filename1 = datetime.now().strftime("%Y%m%d-%H%M%S")

Для

filename1 = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")

Обратите внимание на дополнительный datetime. Кроме того, измените import datetime до from datetime import datetime

Ответ 4

Я удивлен, что нет какого-то одного форматирования, который возвращает значение по умолчанию (и безопасно) для добавления в filename - формат времени, Мы могли бы просто написать FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext'

"%x" instead of "%Y%m%d-%H%M%S"

Ответ 5

Это намного удобнее для чтения человеком.

from datetime import datetime

datetime.now().strftime("%d-%m-%Y_%I-%M-%S_%p")
'15-08-2019_11-57-48_PM'