Как завершить создание текстового документа если заданное условие не выполнено
Товарищи вопрос в следующем: есть в коде конструкция вида
for line in lines:
if line.find ('Информирование') != -1: # то что ищем
t5 = line [0:40] # определяет глубину
print (t5) # выводим на экран проверяем
break
Которая занимается поиском в документе слова Информирование, после чего строку с 0 по 40 символ заносит в результирующий документ и есть программа в которой таких конструкций несколько
# -*- coding: utf-8 -*-
import setuptools
name: str = input ("Введите имя входящего файла: ")
f = open (name, "r") # открываем файл
lines = f.readlines () # читаем его построчно
t1 = lines [6]
t2 = lines [-5]
t3 = lines [-6]
# -------- поиск встроке
#a=t1.find ([1], [2])
# --------
for line in lines:
if line.find ('Информирование') != -1: # то что ищем
t5 = line [0:40] # определяет глубину
print (t5) # выводим на экран проверяем
break
#--------
for line in lines:
if line.find ('НА НР') != -1: # то что ищем
t4 = line [7:40] # определяет глубину
print (t4) # выводим на экран проверяем
break
name1: str = input ("Введите имя исходящего файла: ")
f = open (name1, "w+")
# f.write(str(t1 + "\n" + t2))
f.write ('реквизит верхний// ' + str (t1))
f.write ('реквизит нижний// ' + str (t2))
f.write ('дата// ' + str (t3))
f.write ('\nнанр// ' + str (t4))
f.write ('\n// ' + str (t5))
f.close ()
В следствии выполнения этой программой действий и нахождения слова Информирование программа завершается правильно и создаёт файл, в случае если словарных конструкций находящихся в циклах нет, то возникает такая ошибка
*Traceback (most recent call last):
File "C:/Users/АБИ/PycharmProjects/pythonProject2/main.py", line 31, in <module>
f.write ('\n// ' + str (t5))
NameError: name 't5' is not defined*
и файл не создаётся, как сделать так, что бы вне зависимости от выполнения условий циклов 1. файл создавался 2. была подсказка что то-то или то-то не найдено в файле.
Ответы (1 шт):
У вас в предспоследней срочке
f.write ('\n// ' + str (t5))
но t5 появится, только если отработает условие
if line.find ('Информирование') != -1: # то что ищем
Самое простое - проверять t5 :
if 't5' in globals(): # 't5' in locals()
f.write ('\n// ' + str (t5))
или создать значение по умолчанию:
import setuptools
name: str = input ("Введите имя входящего файла: ")
f = open (name, "r") # открываем файл
lines = f.readlines () # читаем его построчно
t1 = lines [6]
t2 = lines [-5]
t3 = lines [-6]
t5 = "" # создаем с значением по умолчанию
# остальной код
f.write ('\n// ' + str (t5))
f.close ()
Кстати для t4у вас может быть та же проблема