Как прервать цикл после сканирования основного каталога на наличие вирусов python

#python #linux #loops

Вопрос:

У меня есть сервер Linux, где люди сбрасывают папки, содержащие определенные файлы. Я должен просканировать папку на наличие вирусов и переместить ее в другое место. Я могу сканировать папку, но она также сканирует вложенные папки и файлы, поэтому я получаю много писем по электронной почте. Есть ли способ прервать сканирование при первом сканировании?

 for dirs,subdirs,files in os.walk(path):
    for direct in subdirs:
     dirss=(os.path.join(dirs,direct))
     with os.scandir(dirss) as listOfEntries:
        for entry in listOfEntries:
           age = time.time() - entry.stat().st_mtime
           if age > 60:
               data=os.path.join(dirss,entry)
               value= subprocess.run(['clamscan', '-r',data],capture_output=True,text=True)
               p1 = value.stdout
               p1 = p1.split("n")
               for we in p1:
                if 'Infected' in we:
                 new = we.split(":")
                 new[1] =new[1].strip()
                 if new[1] == "0":
 # print all entries that are filer
                  if entry.is_dir():
 

Комментарии:

1. вы можете прервать цикл for , когда обнаружите зараженный файл break , не так ли? или, может быть, я неправильно понял проблему

2. допустим, есть папка под названием A, а внутри нее папка B, а затем внутри B находится файл. поэтому во время сканирования, заражена ли папка A, и я хочу, чтобы она сломалась. но здесь он снова заходит в папку B и сканируется . а затем он снова сканирует и этот файл.

3. как насчет того, чтобы сделать его функцией и просто вернуться, когда вы найдете первый зараженный файл?