您当前的位置:首页 > 计算机 > 编程开发 > Python

【python】批量把代码加入到head元素里面

时间:08-24来源:作者:点击数:

日常需要把谷歌跟踪代码加入到head元素里面,所以借助AI写了一个小工具。

1、把需要加入的内容保存到GACode.txt 文件中

2、执行代码,输入目录即可。(只会修改html扩展名的文件)

代码

import os
import re
import sys
from pathlib import Path

def get_resource_path(relative_path):
    """获取资源文件的绝对路径,支持PyInstaller打包"""
    try:
        # PyInstaller创建临时文件夹,并将路径存储在_MEIPASS中
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

def check_and_add_google_analytics():
    """
    检查所有HTML文件是否包含Google Analytics代码,如果不存在则添加
    """
    # 初始化统计信息
    stats = {
        'total': 0,
        'modified': 0,
        'skipped': 0,
        'errors': 0
    }

    # 从GACode.txt文件读取Google Analytics代码
    ga_code_file = get_resource_path('GACode.txt')

    try:
        with open(ga_code_file, 'r', encoding='utf-8') as f:
            ga_code = f.read().strip()
    except FileNotFoundError:
        print(f"错误:找不到文件 {ga_code_file}")
        stats['errors'] = 1
        return stats
    except Exception as e:
        print(f"错误:读取GA代码文件时出错: {str(e)}")
        stats['errors'] = 1
        return stats

    if not ga_code:
        print("错误:GA代码文件为空")
        stats['errors'] = 1
        return stats

    # 获取当前目录下所有HTML文件
    html_files = list(Path('.').glob('*.html'))
    stats['total'] = len(html_files)

    print(f"找到 {len(html_files)} 个HTML文件")

    for html_file in html_files:
        print(f"\n处理文件: {html_file}")

        try:
            # 读取文件内容
            with open(html_file, 'r', encoding='utf-8') as f:
                content = f.read()

            # 检查是否已经包含Google Analytics代码
            if 'googletagmanager.com/gtag/js' in content:
                print(f"  ✓ {html_file} 已包含Google Analytics代码,跳过")
                stats['skipped'] += 1
                continue

            # 查找</head>标签的位置
            head_end_pattern = r'</head>'
            match = re.search(head_end_pattern, content, re.IGNORECASE)

            if not match:
                print(f"  ✗ {html_file} 未找到</head>标签,跳过")
                stats['errors'] += 1
                continue

            # 在</head>标签前插入Google Analytics代码
            head_end_pos = match.start()
            new_content = (
                content[:head_end_pos] + 
                '    ' + ga_code + '\n' +
                content[head_end_pos:]
            )

            # 写入修改后的内容
            with open(html_file, 'w', encoding='utf-8') as f:
                f.write(new_content)

            print(f"  ✓ {html_file} 已成功添加Google Analytics代码")
            stats['modified'] += 1

        except Exception as e:
            print(f"  ✗ 处理 {html_file} 时出错: {str(e)}")
            stats['errors'] += 1

    print("\n处理完成!")
    return stats

if __name__ == "__main__":
    try:
        # 获取用户输入的目录路径
        current_dir = input("请输入要处理的目录路径: ").strip()

        # 如果用户没有输入,则使用当前目录
        if not current_dir:
            current_dir = os.getcwd()

        print(f"当前工作目录: {current_dir}")

        # 切换到指定目录
        try:
            os.chdir(current_dir)
        except FileNotFoundError:
            print(f"错误:目录 '{current_dir}' 不存在")
            input("\n按回车键退出...")
            exit(1)
        except PermissionError:
            print(f"错误:没有权限访问目录 '{current_dir}'")
            input("\n按回车键退出...")
            exit(1)

        # 检查是否在包含HTML文件的目录中
        html_files = list(Path('.').glob('*.html'))
        if not html_files:
            print("当前目录下没有找到HTML文件,请确保在正确的目录下运行此脚本")
            input("\n按回车键退出...")
            exit(1)

        # 执行添加Google Analytics代码的操作
        stats = check_and_add_google_analytics()

        # 检查返回值是否有效
        if stats is None:
            print("\n⚠ 函数执行异常,无法获取统计信息")
            stats = {'total': 0, 'modified': 0, 'skipped': 0, 'errors': 1}

        # 显示统计结果
        print("\n=== 执行统计 ===")
        print(f"总文件数: {stats['total']}")
        print(f"成功修改: {stats['modified']} 个")
        print(f"已存在跳过: {stats['skipped']} 个")
        print(f"处理失败: {stats['errors']} 个")

        if stats['modified'] > 0:
            print(f"\n✓ 成功为 {stats['modified']} 个HTML文件添加了Google Analytics代码!")
        elif stats['total'] > 0 and stats['skipped'] == stats['total']:
            print("\n✓ 所有HTML文件都已包含Google Analytics代码,无需修改。")
        else:
            print("\n⚠ 没有成功修改任何文件,请检查文件格式或权限。")

        print("\n=== 程序执行完成 ===")
        input("\n按回车键退出...")

    except KeyboardInterrupt:
        print("\n\n程序被用户中断")
        input("\n按回车键退出...")
    except Exception as e:
        print(f"\n程序执行时发生未知错误: {str(e)}")
        input("\n按回车键退出...")

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐