如何在python中刷新文件?

时间:2013-02-18 02:51:18

标签: python python-2.7 io

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

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文件只包含大约一半的行?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我建议使用the with statement来管理输出文件句柄的上下文,以便在范围的末尾关闭它(这样当您查看它时,它是最新的)。 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上搜索正则表达式。