#python
#python
Вопрос:
Я пытаюсь создать программу, которая выполняет поиск .txt
в файлах каталога и помечает любые файлы, содержимое которых соответствует вводу пользователя с помощью регулярных выражений.
os.chdir(folder)
variableRegex = re.compile(variable)
for file in os.listdir(folder):
if file.endswith('.txt'):
filename = file
open(file)
open(file).read()
file = variableRegex.search(open(file).read())
if file.group() is None:
print(filename " negative.")
else:
print(filename " positive.")
Программа функционирует, когда file.group()
не равно None
, т. Е. Когда есть совпадение. Однако программа возвращает ошибку всякий раз, когда file.group() равно None , хотя это обычная функция, которую я хочу использовать в этой программе.
Set what variable to analyze for.
al
Set what folder to analyze.
C:regextest
regex1.txt positive.
Traceback (most recent call last):
File "C:Users<myembarrassingusername>AppDataLocalProgramsPythonPython38automatepythonregexsearch.py", line 20, in <module>
if file.group() is None:
AttributeError: 'NoneType' object has no attribute 'group'
В каталоге C:regextest
есть два .txt
файла, первый из которых имеет ‘al’, а другой имеет другое имя внутри него. Как мне заставить эту программу принять None
значение без получения ошибки?
PS Если вам интересно, переменные variable и folder были введены ранее с помощью input() .
Комментарии:
1. Если file — это тот, который нуждается в проверке, почему вы используете
file.group()
?! Ошибка вызвана тем, что файл пуст.
Ответ №1:
Добавлен код для проверки, имеет ли переменная file
тип None
os.chdir(folder)
variableRegex = re.compile(variable)
for file in os.listdir(folder):
if file.endswith('.txt'):
filename = file
open(file)
open(file).read()
file = variableRegex.search(open(file).read())
#Added Code Here
NoneType=type(None)
if(type(file)!=NoneType):
if file.group() is None:
print(filename " negative.")
else:
print(filename " positive.")
else:
print("Your Logic Here to Handle Such Cases")