Python 扫描C++代码合成word文件

'''
Python 扫描C++代码合成word文件 by 郑瑞国
wordFromScanText.py
'''
import os
import time
import string
import hashlib
import pefile
import datetime
import threading

from time import sleep
import win32com.client as win32

RANGE = range(3, 128)

def creatword():
    app = 'Word'
    word = win32.gencache.EnsureDispatch('%s.Application' % app)
    doc = word.Documents.Add()
    word.Visible = True
    sleep(1)
    rng = doc.Range(0,0)
    return rng

def writeword(rng,line):
    rng.InsertAfter(line)
 
def gethash(file):
    m = hashlib.md5()
    s = hashlib.sha1()
    s256 = hashlib.sha256()
    with open(file,'rb') as f:
        for line in f:
            m.update(line)
            s.update(line)
            s256.update(line)
    md5code = m.hexdigest()
    sha1code = s.hexdigest()
    sha256code = s256.hexdigest()
    return (md5code,sha1code,sha256code)
 
def getdisklist():
    disklist = []
    d = string.ascii_uppercase
    #print(d)
    for w in d:        
        disk = w+':'        
        if os.path.isdir(disk):            
            disklist.append(disk)
    return disklist
 
def getinfo(myfile,rng):
    writeword(rng,myfile)
    try:
        with open (myfile,'rt') as f:
            lines = f.readlines()
            for line in lines:
                print(line)
                writeword(rng,line)
    except:
        pass
 
def scan(disklist):
    rng= creatword()
    for disk in disklist:
        os.chdir(disk+'/')
        tree = os.walk('/')
        for dir in tree:
            for file in dir[2]:
                print(file)
                exname = os.path.splitext(file) 
                if '.h'in exname[1] or '.cpp'in exname[1]:
                    myfile = disk+dir[0]+'/'+file
                    getinfo(myfile,rng)
                    
if __name__=='__main__':    
    disklist = getdisklist()
    scan(disklist)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值