Izy
@Izy
Учу

Почему не могу записать строку в текст (python3)?

def worker():
	a=0
	i=1
	try:
		txt=open("st.txt","a");
	except IOError:
		print ("No file")
	while int(a)==0:
		st="Цикл № %d\n\r"%(i)
		
		txt.write(st);
		print(st)


это происходит потому что файл успевает закрываться или почему то другому?? ))
  • Вопрос задан
  • 324 просмотра
Решения вопроса 2
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Файловые объекты с буффером, чтобы что-то записать, надо буффер сбрасывать методом file.flush(). Ну или закрывать файл в программе, чего вы, видимо не делали.
Ответ написан
@fireSparrow
Про то, что сеанс работы с файлом нужно закрывать, вам уже сказали.
Я хочу добавить к этому пару моментов:

1. Чтобы не заморачиваться тем, закрыли вы файл или нет, рекомендуется всюду, где это целесобразно, использовать менеджеры контекста:

with open('some_file', 'w') as txt:
    txt.write('Hello world!')


2. Если вы создаёте переменную внутри try, то любые манипуляции с этой переменной тоже должны происходить внутри этого же блока try. А то исключение ошибки ввода-вывода вы отловили, но если такая ошибка произойдёт, то переменная txt не создастся, и у вас выскочит исключение NameError, когда вы попытаетесь сделать txt.write(st).

3. Точки с запятой в питоне не ставят.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы