lundi 1 février 2021

How can I keep file pointer in the If clause

Could anybody advice me if there is any way to keep file pointer in the nested IF clause.

I have to parse the file, and based on its content, different code blocks should process the file. I came up with nested IF loops.

enter code here import re

with open('smartctl.txt', 'r') as file: line = file.readlines()

for x in line:
    matchIP = re.search('Checking', x)
    if matchIP:
        print(x)
    Match_Micron55 = re.search('Micron_5100', x)
    Match_Intel = re.search('INTEL', x)
    Match_Micron600 = re.search('Micron_M600', x)
    Any_Micron = re.search('Micron', x)
    if Match_Micron55:
        print("here we have Micron55")

    elif Match_Intel:
        print("here we have Intel")

    elif Match_Micron600:
        print('here we have Micron 600')
        mline = line
        print("file is open")
        check = ""
        for y in mline:
            if y == x:
                check == True
                continue
            if y.startswith('  1 Raw_Read_Error_Rate') and check == True:
                print(y)
                continue
            if y.startswith('  5 Reallocated_Sector_Ct') and check == True:
                print(y)
                continue
            if y.startswith('173 Unknown_Attribute') and check == True:
                print(y)
                break
    elif Any_Micron:
        print('Here we have unsorted values')
enter code here

As you can see I read the file as line. Then I go with variable X through the file. Then, when I fall in IF condition, I have to CONTINUE reading the file: that's keep the file pointer and continue reading exactly from the place I went into the IF loop. I c

The method seems to be non working. Apart from creating Y variable I have also tryed ussing X in the nested IF clause but was not succeed. The x (line) vatiable seems to not keep its value on the second IF entry.

Aucun commentaire:

Enregistrer un commentaire