我有下面的代码来比较一个文件的数量二乘二,我想写我的结果(最后两行)到一个文本文件。但是结果文件是空的。有人知道为什么吗?你知道吗
import difflib
from os import listdir
from os.path import isfile, join
mypath="D:\correctfiles\\112\\"
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
length = len(onlyfiles)
for i in range(0, length):
for j in range(i + 1, length):
fi = open(mypath + onlyfiles[i])
fj = open(mypath + onlyfiles[j])
ilines= fi.readlines()
jlines= fj.readlines()
d = difflib.Differ()
diff_list = list(d.compare(ilines, jlines))
n_adds, n_subs, n_eqs, n_wiered = 0, 0, 0, 0
for diff_item in diff_list:
if diff_item[0] == '+':
n_adds += 1
elif diff_item[0] == '-':
n_subs +=1
elif diff_item[0] == ' ':
n_eqs += 1
else:
n_wiered += 1
if n_eqs >= (len(ilines))/2 or n_eqs >= (len(jlines))/2:
if n_eqs != 0:
fh= open('D:\\outcome.txt', 'w')
print 'lines files %s: %d %s: %d' % (onlyfiles[i],len(ilines),onlyfiles[j], len(jlines))
print 'adds: %d subs: %d eqs: %d ?:%d ' % (n_adds, n_subs, n_eqs, n_wiered)
fh.close()
您正在打印文本,而不是将其写入文件对象。使用
fh.write()
将行写入文件:或者,使用
>>
打印重定向语法:在这两种情况下,我在这里以append模式打开文件,以添加新信息而不是替换文件内容。你知道吗
或者,将打开的文件移到
for
循环的之外,只截断一次,然后在循环完成后关闭一次之前,每次循环迭代都向文件写入行。with
语句负责在with
块完成或退出时为您关闭文件对象。你知道吗这一部分:
将输出打印到控制台,而不是文件。你知道吗
您可以将其打印到文件中,将其更改为:
Python 2.x版
奖金:Python3.x-以防有人需要它:)
相关问题 更多 >
编程相关推荐