python - 写入文件 Python 2.6.4 os.system 后调用 grep
问题描述
我正在尝试读取text.txt
,写入某些行temp.txt
,然后使用os.system
call grep
ontemp.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
******************************
解决方案
问题是您忘记.close()
了文件,这可能会留下尚未写入磁盘的缓冲数据。
但是,无需使用grep
或将数据写入临时文件。
for line in text:
# ...
if BoolStart:
if 'Ace:' in line or 'Spade:' in line:
print(line)
推荐阅读
- java - Docker php:7.3.28-apache-stretch 镜像,其中运行 openjdk 1.9
- python - 如何将子列表切片到给定长度?
- python - Kafka confluent proxy api - send message - Internal server error
- azure-functions - 看似有效的 cron 表达式更改会触发“Microsoft.Azure.Storage.Common:找不到有效的帐户信息组合”。
- java - Gradle 中的依赖排除
- android - 从另一个类传递和调用函数 - 代表?
- flutter - 当我尝试运行颤振医生 --android-licenses 时出错
- reactjs - React Navigation (native) V5:深色主题的问题。抽屉导航器切换按钮不与背景形成对比。包括截图
- javascript - Firebase 实时数据库 - 客户端无权访问所需数据
- tensorflow - 您能否澄清分类问题中“一次性编码标签以使用 MSE”背后的逻辑