0

我有这个片段并且发生了一件奇怪的事情:

out = open("./out.txt","w+")
for line in open("./int.txt","r").readlines():
    for key in dic.keys():
        if line.count(key) > 0:
            line = re.sub(key,dic[key],line)
    print line
    out.write(line)

python shell 的输出是正确的,它包含根据文件切换后的所有行,dic{}out文件只包含大约一半的行?

4

2 回答 2

1

文件并不总是立即写入磁盘,它们需要在最后刷新 try out.flush()

于 2013-02-18T02:53:08.867 回答
1

我建议使用with语句来管理输出文件句柄的上下文,以便它在作用域的末尾关闭(这样当您查看它时,它是最新的)。for循环使用您的输入文件为您执行此操作。

with open("./out.txt", "w+") as out:
    for line in open("./int.txt", "r"):
        for key in dic.keys():
            if key in line:
                line = re.sub(key, dic[key], line)
        print line,
        out.write(line)

其他一些小改动:

  • .readlines()不需要
  • if key in line:一旦找到第一个实例,将停止搜索key,提高效率。line
  • print line,不会在line.

还要考虑是否line = line.replace(key, dic[key])足够,因为您不是在line.

于 2013-02-18T03:08:23.897 回答