常建瑞 发表于 2019-12-16 11:35

两个文件去重并写入到第三个文件

本帖最后由 常建瑞 于 2019-12-17 11:10 编辑

1.功能
1.txt和2.txt去重后写入去重后.txt
2.工作目录
D盘根目录
3.解释由于使用了python set()函数,所以输出结果会随机乱序
4.有用则用,无用勿喷
5.关于大家反馈的闪退,注意文件名都必须存在于指定路径,文件必须utf-8(不限制对比的是文字数字符号),模块都是打包好的,理论不存在闪退
https://www.lanzouj.com/i81qd7a


#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
a = time.time()
print("开始检测,请耐心等待,文件较大需要时间越长,完毕本界面会跳出提示")
def file_qc():
    str1 = []
    file_1 = open("d:/1.txt","r",encoding="utf-8")
    for line in file_1.readlines():
      str1.append(line.replace("\n",""))

    str2 = []
    file_2 = open("d:/2.txt", "r", encoding="utf-8")
    for line in file_2.readlines():
      str2.append(line.replace("\n", ""))

    str_dump = []
    for line in str1:
      if line in str2:
            str_dump.append(line)    #将两个文件重复的内容取出来

    str_all = set(str1 + str2)      #将两个文件放到集合里,过滤掉重复内容

    for i in str_dump:
      if i in str_all:
            str_all.remove(i)   #去掉重复的文件
    print("正在写去重后的结果,请稍等")
    for str in str_all:             #去重后的结果写入文件
      with open("d:/去重后.txt","a+",encoding="utf-8") as f:
            f.write(str + "\n")

if __name__=="__main__":
    file_qc()
print('耗时(秒):%f' % (time.time() - a))
print("30秒后自动关闭该界面,你也可以现在手动关闭")
time.sleep(30)

常建瑞 发表于 2019-12-17 11:06

流月汐志 发表于 2019-12-16 14:20
cat file01.txt >> file02.txt && sort file02.txt | uniq > file03.txt

非常好也非常快,不过不是每个人都在用linux

常建瑞 发表于 2019-12-17 11:24

立竿见影 发表于 2019-12-16 13:44
我也是WIN10 64位专业版系统,打开秒退。

闪退是带去重文件不符合或者位置不对

fs6842 发表于 2019-12-16 11:48

提示无法启动此程序,

常建瑞 发表于 2019-12-16 13:13

fs6842 发表于 2019-12-16 11:48
提示无法启动此程序,

我的win10 64 理论都可以的嘛

立竿见影 发表于 2019-12-16 13:44

常建瑞 发表于 2019-12-16 13:13
我的win10 64 理论都可以的嘛

我也是WIN10 64位专业版系统,打开秒退。

92monkey 发表于 2019-12-16 13:51

WIN7-64也是打开秒退。

流月汐志 发表于 2019-12-16 14:20

cat file01.txt >> file02.txt && sort file02.txt | uniq > file03.txt

fcguo800 发表于 2019-12-17 10:39

有思路有方法,非常不错的工具,感谢楼主分享。

常建瑞 发表于 2019-12-17 11:25

92monkey 发表于 2019-12-16 13:51
WIN7-64也是打开秒退。

重新仔细看一次说明
页: [1] 2
查看完整版本: 两个文件去重并写入到第三个文件