Ошибка, о которой вы сообщаете, вызвана :
в имени папки. Замените это на действительный символ :
import datetime
def write_up_commands(up_int):
fp = open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt', 'w+')
for i in up_int:
fp.write('int ' + i + '\n mode \n')
fp.close()
Давайте посмотрим, что происходит:
с datetime.datetime.now()
мы спрашиваем время now
, поэтому текущее время
с помощью .strftime("%Y-%m-%d %H.%M.%S")
мы форматируем время из модуля datetime
, как мы предпочитаем: %Y
означает год с 4 цифрами, затем мы хотим -
, затем месяц с двумя цифрами %m
, затем -
, две цифры день %d
, пробел
, 24-часовой формат часов %H
, точка .
, 2 цифры минуты %M
, точка .
, две цифры секунды %s
.
Вы можете напечатать текущую дату и время с помощью:
print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S"))
с + '_abc.txt'
мы добавляем в дату '_abc.txt'
текст.
Вы можете напечатать полный текст с:
print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt')
с open('my_file.txt', 'w+')
мы просим нашу операционную систему создать файл с именем my_file.txt
. w+
Открывает файл для записи и чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
с
for i in up_int:
fp.write('int ' + i + '\n mode \n')
fp.close()
вы пишете в своем файле 'int ' + i + '\n mode \n'
для каждого i в up_int.
Если мы хотим создать файл с другим именем, мы можем изменить строку (datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + '_abc.txt'
. Например, если нам нужен файл с: текущей датой, подчеркиванием, вводом пользователя, .txt , мы можем написать:
user_text = raw_input("write the name of the file: ")
fp = open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+')
...
Даже если не спросить, я бы хотел отметить, что fp.close()
- это строка, которая закрывает файл. Такой метод опасно обрабатывать подобным образом, потому что, если вы забудете закрыть файл или что-то произойдет до его закрытия, вы оставите открытые файлы повсюду. Я предлагаю вам изменить весь свой код с помощью:
with open(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S") + user_text + '.txt', 'w+') as fp:
for i in up_int:
fp.write('int ' + i + '\n mode \n')
, который автоматически обрабатывает процедуру закрытия в любой ситуации.
По второму вопросу вы фактически каждый раз создаете новый файл. Имейте в виду, что, поскольку имя файла меняется со временем, если вы создаете более 1 файла каждую секунду, каждый файл будет перезаписывать предыдущий.
В качестве примечания обратите внимание, что я изменил 20%y
на %Y
, что является правильным способом отображения 4-значного года