|
发表于 2020-11-2 00:18:26
|
显示全部楼层
本帖最后由 阿奇_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)
复制代码 |
|