文档比对工具/Word查重(基于python的本地word文档查重)二

本地文档查重一

本地文档查重二

代码思路

使用第本地文档查重一的基本思路。

根据自己的需求去自定义一些函数

1.自定义一个读取对比word文件名的函数。

2.自定义一个根据文件名读取word内容函数,并将内容转换为list.

3.自定义对比的方法。

4.主函数去调用上面的方法,并采用多进程方式。

多进程/多线程

本文章在测试下述代码时,也曾经采用多线程(threading.Thread)方式,但感觉未展现多线程的优势,后改成多进程multiprocessing。查阅资料在多线路去与多个IP、建立多个连接这些用多线程比较好,本地处理多个占资源的用多进程比较合适。

简单多进程案例

写一个sleep函数,执行需要2秒

主进程用for循环执行5次

不使用多进程理论执行需要10s以上

import multiprocessing
import time
from time import sleep


def worker():
    sleep(2)
    print('worker started')

if __name__ == '__main__':
    processes=[]
    #开始时间
    print("start time:",time.ctime())
    #同时开启5个进程
    for i in range(5):
        process = multiprocessing.Process(target=worker)
        processes.append(process)
    # 进程同步
    for p in processes:
        p.start()
        #进程同步
    for p in processes:
        p.join()
    #结束时间
    print("end time:", time.ctime())

运行结果:

实际只运行了3s

文档比对工具/Word查重(基于python的本地word文档查重)二_第1张图片

代码演示

已经熟悉了多进程,就把它和查重一中的几个功能结合下,做一个相对比较完整的查重工具,有输入和输出。此段代码除了没有完整的GUI界面,自己一般的查重的需求都满足了。

分段解析

首先通过input函数手动去输入文件名,输入end结束输入,把文件名存入一个doclist的List里

def doc_read():
    doclist =[]
    while True:
        docname = input("对比文档名字(如果结束请输入end):")
        if docname=="end":
            break
        docpath = '%s.docx' % (docname)
        doclist.append(docpath)

输出效果:

文档比对工具/Word查重(基于python的本地word文档查重)二_第2张图片

word内容转成list

将长度太低的段落删掉,提升查重效率

  if len(text1)>8:
         

你可能感兴趣的:(windows,python,开发语言)