本帖最后由 阿奇_o 于 2020-11-2 00:21 编辑
折腾有点久,建议拿两个简单的txt文件来比较,如,ABC,xyz, 123 这样的 ^_^
代码如下,# 题目:如何比较两个文件的各行是否对应相同
print('\n\n-------方法1---------')
# 方法1:(非对称性地不完美比较,只以f1做依据,不考虑f2中的行数或多或少的情况,只拿f1中有的行来比)
f1 = open('record1.txt')
f2 = open('record2.txt')
count = 0
for e1 in f1:
e2 = f2.readline()
if e1 != e2:
count += 1
print('%s | %s' %(e1.replace('\n', '\\n'), e2.replace('\n', '\\n')))
print('有%s行不同。' % count)
print('\n\n-------方法2---------')
# 方法2:(完美地比较对应的每一行)
import linecache
# l1 = linecache.getline('record1.txt', 2) # 指定读取某一行
# print(l1)
n1 = len(open('record1.txt').readlines()) #统计共有多少行
n2 = len(open('record2.txt').readlines())
count = 0
print('注意:文件1共有%s行,文件2共有%s' %(n1, n2))
print('若有不同,对比如下:')
if n1 >= n2:
for i in range(1, n1+1): # 若文件1的行数更多或相等,则以其为循环次数(保证每一行都对应进行比较)
e1 = linecache.getline('record1.txt', i)
e2 = linecache.getline('record2.txt', i)
if e1 != e2:
count += 1
print('%s | %s' %(e1.replace('\n', '\\n'), e2.replace('\n', '\\n')))
else:
for j in range(1, n2+1): # 相反,若文件2的行数更多,则以它为循环次数的依据
e1 = linecache.getline('record1.txt', j)
e2 = linecache.getline('record2.txt', j)
if e1 != e2:
count += 1
print('%s | %s' %(e1.replace('\n', '\\n'), e2.replace('\n', '\\n')))
print('=====共有%s行不同。======' % count)
|