Python:无法在多个文件中写入结果

时间:2017-11-14 05:16:27

标签: python

我有一个主草稿文本文件,其中包含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结果写入相应的文件时,我发现只有第一个标记的结果是根据需要编写的,而其他标记文件是空的。

2 个答案:

答案 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)