鱼C论坛

 找回密码
 立即注册
查看: 1149|回复: 7

[已解决]比较txt文件每一行是否一样

[复制链接]
发表于 2019-6-2 11:01:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 saberAMD 于 2019-6-2 14:15 编辑
  1. def file_compare(file1,file2):
  2.     count = 0
  3.     list1 = []
  4.     f1 = open(file1)
  5.     f2 = open(file2)
  6.     for i in f1:
  7.         if i != f2.readline():
  8.             count += 1
  9.             list1.append(count)
  10.     f1.close()
  11.     f2.close()
  12.     return list1
  13.         
  14. file1 = input('第一个文件名字')
  15. file2 = input('第二个文件名字')
  16. a = file_compare(file1,file2)
  17. print('两个文件一共有%d处不同'%len(a))
  18. for n in a:
  19.     print('第%d行不一样'%n)


复制代码
请问下为什么有问题  感激不尽
最佳答案
2019-6-2 19:51:58
首先 cout不应该在if 里面。其次你用for i in f1:明显也不好,如果2个文件的行数不一样呢?
所以我的代码是:
  1. def file_compare(file1,file2):   
  2.    
  3.     f1 = open(file1)
  4.     f2 = open(file2)
  5.    
  6.     i = 1
  7.     list1 = []
  8.     while True:
  9.         l1 = f1.readline()
  10.         l2 = f2.readline()

  11.         if l1 != l2:
  12.             list1.append(i)
  13.             
  14.         i += 1
  15.             

  16.         # 2个文件同时到了文件尾
  17.         if not l1 and not l2:
  18.             break            

  19.     f1.close()
  20.     f2.close()
  21.     return list1
  22.         
  23. file1 = input('第一个文件名字')
  24. file2 = input('第二个文件名字')
  25. a = file_compare(file1,file2)
  26. print('两个文件一共有%d处不同' % len(a))

  27. for n in a:
  28.     print('第%d行不一样'%n)


复制代码
2019-06-02.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-2 12:12:35 | 显示全部楼层
代码为什么 不以文字形式发下?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-2 14:16:17 | 显示全部楼层
ba21 发表于 2019-6-2 12:12
代码为什么 不以文字形式发下?

忘了 不好意思 加了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-2 16:45:37 | 显示全部楼层
1.txt和2.txt是在程序的文件夹吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-2 19:51:58 | 显示全部楼层    本楼为最佳答案   
首先 cout不应该在if 里面。其次你用for i in f1:明显也不好,如果2个文件的行数不一样呢?
所以我的代码是:
  1. def file_compare(file1,file2):   
  2.    
  3.     f1 = open(file1)
  4.     f2 = open(file2)
  5.    
  6.     i = 1
  7.     list1 = []
  8.     while True:
  9.         l1 = f1.readline()
  10.         l2 = f2.readline()

  11.         if l1 != l2:
  12.             list1.append(i)
  13.             
  14.         i += 1
  15.             

  16.         # 2个文件同时到了文件尾
  17.         if not l1 and not l2:
  18.             break            

  19.     f1.close()
  20.     f2.close()
  21.     return list1
  22.         
  23. file1 = input('第一个文件名字')
  24. file2 = input('第二个文件名字')
  25. a = file_compare(file1,file2)
  26. print('两个文件一共有%d处不同' % len(a))

  27. for n in a:
  28.     print('第%d行不一样'%n)


复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-2 20:21:04 | 显示全部楼层
冬雪雪冬 发表于 2019-6-2 16:45
1.txt和2.txt是在程序的文件夹吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-2 20:41:36 | 显示全部楼层
我也写了一个。
  1. def file_compare(file1,file2):
  2.     list1 = []
  3.     f1 = open(file1)
  4.     f2 = open(file2)
  5.     for line, (i, j) in enumerate(zip(f1, f2)):
  6.         if i != j:
  7.             list1.append(line + 1)
  8.     f1.close()
  9.     f2.close()
  10.     return list1
  11.         
  12. file1 = input('第一个文件名字')
  13. file2 = input('第二个文件名字')
  14. a = file_compare(file1,file2)
  15. print('两个文件一共有%d处不同'%len(a))
  16. for n in a:
  17.     print('第%d行不一样'%n)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-6-2 20:49:24 | 显示全部楼层

非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 01:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表