我有这个片段,并且发生了一件奇怪的事情:
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
文件只包含大约一半的行?
答案 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
上搜索正则表达式。