写入文件后调用 grep Python 2.6.4 os.system

Calling grep after writing to file Python 2.6.4 os.system

我正在尝试从 text.txt 读取,将某些行写入 temp.txt,然后使用 os.systemtemp.txt 上调用 grep 在我 运行 程序之后, temp.txt 被创建,我可以在终端中调用相同的 grep 命令以获得我想要的结果,这让我认为这是一个异步问题

我正在使用 Python 2.6.4

import os

#opens new file to write to
temp = open("temp.txt", "w+")

boolStart = False
with open("text.txt", "r") as text:
    for line in text:
        if("GREEN" in line):
            boolStart = True
        elif("YELLOW" in line):
            boolStart = False
        if(boolStart):
            temp.write(line)
            

os.system("grep -e 'Ace: ' -e 'Spade' {0}".format("temp.txt"))

我从 运行ning python script.py 什么也得不到,即使我通过管道传输到一个新文件

问题:为什么我不能对我刚用同一个程序编写的文件调用 grep

对于上下文,这是 text.txt

******************************
*************RED**************
******************************

Ace: John
Ace: Mike
Spade: Nick
Spade: Pete

******************************
***********GREEN**************
******************************

Ace: Emily
Ace: Anna
Spade: Krista
Spade: Maddie

******************************
*************YELLOW***********
******************************

Ace: Nicole
Ace: Scott
Ace: Zac
Ace: Phil

这是temp.txt我试图在

上调用grep的文件
***********GREEN**************
******************************

Ace: Emily
Ace: Anna
Spade: Krista
Spade: Maddie

******************************

问题是您忘记了 .close() 文件,这可能会留下尚未写入磁盘的缓冲数据。

但是,没有必要使用grep或将数据写入临时文件。

for line in text:
    # ...
    if BoolStart:
        if 'Ace:' in line or 'Spade:' in line:
            print(line)