簡體   English   中英

在python中逐塊讀取文件

[英]read file block by block in python

我有這種格式的文件

MACRO L20_FDPQ_TV1T8_1
 FIXEDMASK ;
 CLASS CORE ;
 ...
 ...
END L20_FDPQ_TV1T8_1
MACRO INV_20
...
...
END INV_20

我想將文件讀取為塊,以便每個MACRO到其名稱末尾在python中形成一個塊。 我試圖用這個

with open(file_name, "r") as f_read:
    lines = f_read.readlines()
num = 0
while num < len(lines):
    line = lines[num]
    if re.search(r"MACRO\s+", line, re.IGNORECASE):
            macro_name = line.split()[1]
            while re.search(r"\s+END\s+%s"%macro_name, line, re.IGNORECASE) is None:
                line = lines[num + 1]
                #...do something...
                num = num+1
            num +=1

如何有效地做到這一點?

假設您不能嵌套宏,則宏始終以“ MACRO [name]”開頭,以“ END [name]”結尾:

# read the contents of the file
with open(file_name, "r") as f_read:
    lines = f_read.readlines()

current_macro_lines = []
for line in lines:
    if line.startswith("MACRO"):
        macro_name = line.split()[1]

    # if line starts with END and refers to the current macro name
    elif line.startswith("END") and line.split()[1] == macro_name:
        # here the macro is complete, 
        #put the code you want to execute when you find the end of the macro

        # then when you finish processing the lines, 
        # empty them so you can accumulate the next macro
        current_macro_lines = []

    else:
        # here you can accumulate the macro lines
        current_macro_lines.append(line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM