python给HTML文件内的js和css加文件的md5版本号

python版本3.5:

准备工作:需要先安装bs4!!!

直接上代码:

from bs4 import BeautifulSoup
from hashlib import md5
import os
 
#让使用者输入需要执行的目录
exeDir = input('请输入执行目录',)
#切换到执行目录
os.chdir(exeDir)
#合并后的js文件目录,并创建该目录
#需要合并的js序列
#合并文件函数

def fileMd5(fileName):
    m = md5();
    with open(fileName,'rb') as fileContent:
        m.update(fileContent.read());
    return m.hexdigest()[0:8];

#主文件
#盛放需要合并js的列表
for fileItem in os.listdir():
    if(os.path.isfile(fileItem)):
        if(os.path.splitext(fileItem)[1] == '.html'):
            originList = [];
            replaceList = [];
            #寻找需要替换的文件内容
            with open(fileItem, 'r+', buffering=163840, encoding='utf8') as srcHtml:
                line = srcHtml.readline();
                while line:
                    bItem = BeautifulSoup(line,'html.parser');
                    try:
                        #判断外链的script标签
                        if(bItem.script != None and bItem.script['src'].find('//') == -1):
                            fileSrc = bItem.script['src'];
                            filePathName = fileSrc.split('?')[0];
                            fileMd5Value = fileMd5(filePathName);
                            originList.append(fileSrc);
                            replaceList.append(filePathName+'?v='+fileMd5Value)
                        #判断外链的link标签
                        if(bItem.link != None and bItem.link['href'].find('//') == -1):
                            fileSrc = bItem.link['href'];
                            filePathName = fileSrc.split('?')[0];
                            fileMd5Value = fileMd5(filePathName);
                            originList.append(fileSrc);
                            replaceList.append(filePathName+'?v='+fileMd5Value)
                    except KeyError:
                        pass
                    line = srcHtml.readline();
                #加入版本号后替换
                if len(originList) == len(replaceList):
                    srcHtml.seek(0, 0)
                    fileContent = srcHtml.read();
                    for index in range(len(originList)):
                        fileContent = fileContent.replace(originList[index],replaceList[index]);
                    srcHtml.seek(0, 0)
                    srcHtml.write(fileContent);

感谢看完指鹤文章,希望指鹤的文章对您有所帮助。

闲暇时,指鹤喜欢写一些文章,部分发表在了豆瓣,若是您对此感兴趣,您可以点击下面连接支持下指鹤,指鹤在此表示感谢了

绝命笔记 一封匿名信引发的追寻 迷案追凶 量子危机

Leave a Reply