首页 > 解决方案 > 写入文件 Python 2.6.4 os.system 后调用 grep

问题描述

我正在尝试读取text.txt,写入某些行temp.txt,然后使用os.systemcall grepontemp.txt 在我运行程序后,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"))

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

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

标签: pythonpython-2.6

解决方案


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

但是,无需使用grep或将数据写入临时文件。

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

推荐阅读