我有一个主草稿文本文件,其中包含PA,ST等标签。我的目的是为每个标签创建一个文件,并将包含标签的行写入相应的文件。这是我目前的python代码
#!/usr/bin/python3
import sys
flnmc=sys.argv[1]
tags_dict={'PA':'Positive_Assertions','ST':'Self_improvement_Thought'\
,'TO':'TodO_task','WK':'WorK_todo','FN':'FuNny','CURRENT':'CURRENT'}
print(flnmc)
def grep_tags(tag):
with open(flnmc,'r') as fc:
for line in fc:
if tag in line:
print(line,end='')
grep_tags('WK')
fc=open(flnmc,'r')
for tag, s in tags_dict.items():
f=open("%s.txt" %s,'w')
for line in fc:
if tag in line:
f.write(line)
f.close()
问题:grep_tags函数正常工作,打印包含主文本文件标记的行。还会创建所有必需的文件。但是当将grepped结果写入相应的文件时,我发现只有第一个标记的结果是根据需要编写的,而其他标记文件是空的。
答案 0 :(得分:2)
把: FC =开放(flnmc,' R') 内部声明: for tag,s在tags_dict.items()中: .... 环 也就是说,你每次都要调用open语句,否则它就会变得陈旧......
...
grep_tags('WK')
#fc=open(flnmc,'r')
for tag, s in tags_dict.items():
fc=open(flnmc,'r')
f=open("%s.txt" %s,'w')
for line in fc:
if tag in line:
f.write(line)
f.close()
答案 1 :(得分:1)
这会将标记写入相应的文本文件。您错过的是在后半部分打开flnmc
文件。
fc=open(flnmc,'r')
for tag, s in tags_dict.items():
with open(flnmc,'r') as fc:
for line in fc:
if tag in line:
f=open("%s.txt" %s,'w')
f.write(line)