合并多个源码/配置文件

功能:

  • 合并多个源码/配置文件为一个 .txt
  • 将所有原始文件(保留从 D:\Android\project 开始的相对路径结构)压缩为 .zip
  • 同时将生成的合并文本文件也一并加入压缩包中(只保留其文件名)。

最终完整脚本:含相对路径与合并输出文件打包

import os
from datetime import datetime
import zipfile

# 要合并和压缩的文件路径列表
file_paths = [
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\CardPresenter.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\Channel.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\MainActivity.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\MainFragment.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\PlaybackActivity.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\java\com\example\webplayertv\PlaybackVideoFragment.kt",
    r"D:\Android\project\WebPlayerTV\app\src\main\AndroidManifest.xml",
    r"D:\Android\project\WebPlayerTV\app\src\main\res\layout\fragment_player.xml",
    r"D:\Android\project\WebPlayerTV\app\build.gradle.kts",
    r"D:\Android\project\WebPlayerTV\settings.gradle.kts"
]

# 项目根路径(用于保留相对路径结构)
project_root = r"D:\Android\project"

# 时间戳
timestamp = datetime.now().strftime("%y-%m-%d-%H-%M-%S")

# 合并输出文件路径(.txt)
output_path_txt = fr".\webplayertv_merged_output_{timestamp}.txt"

# 压缩输出文件路径(.zip)
output_path_zip = fr".\webplayertv_merged_output_{timestamp}.zip"

# 合并逻辑
with open(output_path_txt, 'w', encoding='utf-8') as outfile:
    for path in file_paths:
        outfile.write(f"\n\n==================== {path} ====================\n\n")
        try:
            with open(path, 'r', encoding='utf-8') as infile:
                outfile.write(infile.read())
        except Exception as e:
            outfile.write(f"<< 无法读取文件: {e} >>\n")

print(f"文件已合并保存到: {output_path_txt}")

# 压缩逻辑(保留从 project_root 开始的相对路径结构 + 添加合并输出文件)
with zipfile.ZipFile(output_path_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
    for file in file_paths:
        if os.path.exists(file):
            arcname = os.path.relpath(file, start=project_root)
            zipf.write(file, arcname=arcname)
        else:
            print(f"跳过不存在的文件: {file}")
    # 添加合并生成的文本文件(只保留文件名)
    zipf.write(output_path_txt, arcname=os.path.basename(output_path_txt))

print(f"文件已压缩保存到: {output_path_zip}")

📦 示例 .zip 文件内容结构:

WebPlayerTV/app/src/main/java/com/example/webplayertv/CardPresenter.kt
WebPlayerTV/app/src/main/java/com/example/webplayertv/...
WebPlayerTV/app/src/main/AndroidManifest.xml
WebPlayerTV/app/build.gradle.kts
WebPlayerTV/settings.gradle.kts
webplayertv_merged_output_25-08-08-14-22-00.txt   <-- 这个是合并文件(无路径)
No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous