ошибка объекта python — ‘NoneType’, когда я хочу, чтобы объект имел значение None?

#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")