Найти - Пользователи
Полная версия: Не определяется переменная, спасите!
Начало » Python для новичков » Не определяется переменная, спасите!
1
parkan111
На учебе задание: Необходимо сымитировать работу антивируса, выдает ошибку:
 Traceback (most recent call last):
  File "C:\Users\Александр\Desktop\Сидельников Вариант 12\Антивирус.py", line 28, in <module>
    if v_str in str1:
NameError: name 'str1' is not defined

КОД:
 import os
try:
    f1=open('files\file1.txt','r', encoding='utf-8')
    str1=f1.read()
    f2=open(r'files/file2.txt', encoding='utf-8')
    str2=f2.read()
    f3=open(r'files/file3.txt', encoding='utf-8')
    str3=f3.read()
    f4=open(r'files/file4.txt', encoding='utf-8')
    str4=f4.read()
    f5=open(r'files/file5.txt', encoding='utf-8')
    str5=f5.read()
    f6=open(r'files/file6.txt', encoding='utf-8')
    str6=f6.read()
    f7=open(r'files/file7.txt', encoding='utf-8')
    str7=f7.read()
    f8=open(r'files/file8.txt', encoding='utf-8')
    str8=f8.read()
    
except:
    print('Файл  не найден!')
    #raise SystemExit
print('-'*30)
v_str=input('Введите вирусное значение (например, вирус): ')
if v_str in str1:
    with open('files/file1.txt', 'a') as f1:
        f1.write(str1.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
print('*'*30)
if v_str in str2:
    with open('files/file2.txt', 'a') as f2:
        f2.write(str2.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
    
if v_str in str3:
    with open('files/file3.txt', 'a') as f3:
        f3.write(str3.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
    
if v_str in str4:
    with open('files/file4.txt', 'a') as f4:
        f4.write(str4.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
    
if v_str in str5:
    with open('files/file5.txt', 'a') as f5:
        f5.write(str5.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
    
if v_str in str6:
    with open('files/file6.txt', 'a') as f6:
        f6.write(str6.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
if v_str in str7:
    with open('files/file7.txt', 'a') as f7:
        f7.write(str7.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
    
if v_str in str8:
    with open('files/file8.txt', 'a') as f8:
        f8.write(str8.replace(v_str, ' '))
    print('Вирусная строка удалена из файла')
    print('*'*30)
else:
    print('Вирусов не обнаружено!')
    print('*'*30)
AD0DE412
 import os
os.path.sep
parkan111
AD0DE412
import os
os.path.sep
Дописал
  import os
os.path.sep
Ошибка осталась той же.
Спасибо большое за подсказку!
Romissevd
а почему тут слеши разные?
 f1=open('files\file1.txt','r', encoding='utf-8')
f2=open(r'files/file2.txt', encoding='utf-8')
Romissevd
\f - Перевод страницы для экранирования используют \\.
Вероятно у тебя печатается сообщение - Файл не найден? И что если файл не найден? Соответственно в переменную ты не сможешь записать какое-то значение, а дальше в коде ты эту переменную пытаешься использовать. Как минимум определи значение по умолчанию. str1 = None
AD0DE412
parkan111
Ошибка осталась той же.
ммм … сорян … мне пожалуй яснее нужно было выразиться … os.path.sep это определенный для вашей опереционной системы разделитель в пути файлов
выше Romissevd более мение объяснил что к чему
например если вам нужно открыть файл по пути С:\test\text.txt то в питоне пишут экранируя символ ‘\’
 f = open("С:\\test\\text.txt", "r")

или используют rawstring

 f = open(r"С:\test\text.txt", "r")

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB