I have a directory of text files. I need to set a status for each file based on whether it matches 1, both or neither regex patterns. My plan is:
- Walk directory
- If the file’s content:
- does not match either pattern, status = 1
- matches pattern1 BUT NOT pattern2, status = 2
- matches pattern2 BUT NOT pattern1, ignore
- matches pattern1 AND pattern2, status = 3
- Print file name and status
My code:
pattern1 = re.compile(r'critical', re.IGNORECASE) pattern2 = re.compile(r'gouting bile', re.IGNORECASE) for file in os.listdir('/home/ea/medical'): if re.findall(pattern1, file) and re.findall(pattern2, file): status = 3 print(file, "Status: ", status) elsif re.findall(pattern1, file) and not re.findall(pattern2, file): status = 2 print(file, "Status: ", status) else: status = 1 print(file, "Status: ", status)
My issue is that this doesn’t return anything.
Advertisement
Answer
you need to read the files, you’re just checking the patterns against the filenames.
for file in os.listdir('/home/ea/medical'): contents = open(os.path.join('/home/ea/medical', file)).read() status = 1 if re.search(pattern1, contents): status += 1 if re.search(pattern2, contents): status += 1 print(f"{file} Status: {status}")