#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. как насчет того, чтобы сделать его функцией и просто вернуться, когда вы найдете первый зараженный файл?