3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 1734|回复: 37
打印 上一主题 下一主题

[分享] mod去重工具

[复制链接]

80

主题

479

帖子

954

积分

超级玩家

Rank: 5Rank: 5

贡献度
81
金元
6299
积分
954
精华
0
注册时间
2015-10-3
跳转到指定楼层
主题
发表于 2024-10-2 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
执行mod去重.exe或mod去重.py后输入异星工厂mods文件夹路径,会打印旧版本信息,根据提示判断是否执行删除旧版本。

exe与py文件:

游客,如果您要查看本帖隐藏内容请回复


mods文件夹可能的路径:

在《异星工厂》(Factorio)中,玩家自定义的MOD文件通常存放在以下路径:

Windows:

游戏根目录\mods

C:\Users\[你的用户名]\AppData\Roaming\Factorio\mods

MacOS:

~/Library/Application Support/factorio/mods

Linux:

~/.factorio/mods


你可以将下载的MOD文件(通常为.zip格式)放置在该路径中,然后在游戏启动时启用这些MOD。



执行摘要:

请输入路径: c:\1\1.1.1\mods

发现的文件及其版本:
aai-signals:
  - 旧版本: aai-signals_0.5.zip
  - 最新版本: aai-signals_0.6.1.zip
zik-lib: zk-lib_0.16.7.zip (只有一个版本)
ZRecycling: ZRecycling_1.1.4.zip (只有一个版本)

旧版本文件总占用空间: 56.05 MB
是否删除旧版本文件?(y/n): y
已删除旧版本文件: aai-signals_0.5.zip
已删除的旧版本文件总占用空间: 56.05 MB
按 Enter 键退出...


mod去重.py
import os
import re
from collections import defaultdict

def get_zip_files(path):
    """
    获取路径下所有.zip文件的名称
    """
    if not os.path.exists(path):
        print(f"路径 {path} 不存在,请检查路径输入。")
        return []

    # 只获取 .zip 文件
    zip_files = [f for f in os.listdir(path) if f.endswith(".zip")]
    return zip_files

def extract_version(file_name):
    """
    从文件名中提取出文件的主名称和版本号
    假设文件名格式为 name_version.zip,例如: Mobile_Factory_0.11.4.zip
    """
    # 使用正则表达式匹配文件名中的版本号
    match = re.match(r"(.+?)_([\d.]+)\.zip", file_name)
    if match:
        return match.groups()  # 返回 (name, version)
    else:
        return None, None

def sort_versions(files):
    """
    根据文件名和版本号对文件进行分类和排序
    返回 {name: [versions]} 的字典,并按版本号排序
    """
    file_dict = defaultdict(list)
    for file in files:
        name, version = extract_version(file)
        if name and version:
            file_dict[name].append((file, version))

    # 按版本号排序,假设版本号是语义化版本
    for name in file_dict:
        file_dict[name].sort(key=lambda x: list(map(int, x[1].split('.'))))

    return file_dict

def print_duplicates_and_get_old_versions(file_dict):
    """
    打印重复文件,并返回需要删除的旧版本文件列表
    """
    old_versions_to_remove = []
    print("\n发现的文件及其版本:")
    for name, versions in file_dict.items():
        if len(versions) > 1:
            print(f"{name}:")
            for file, version in versions[:-1]:  # 打印除最新版本外的所有版本
                print(f"  - 旧版本: {file}")
                old_versions_to_remove.append(file)
            print(f"  - 最新版本: {versions[-1][0]}")
        else:
            print(f"{name}: {versions[0][0]} (只有一个版本)")

    return old_versions_to_remove

def calculate_space(files, path):
    """
    计算文件列表所占用的总空间
    """
    total_size = 0
    for file in files:
        full_path = os.path.join(path, file)
        if os.path.isfile(full_path):
            total_size += os.path.getsize(full_path)
    return total_size

def delete_old_versions(path, old_versions):
    """
    删除旧版本文件并计算占用空间
    """
    total_size = calculate_space(old_versions, path)
   
    for file in old_versions:
        full_path = os.path.join(path, file)
        try:
            os.remove(full_path)
            print(f"已删除旧版本文件: {file}")
        except Exception as e:
            print(f"无法删除文件 {file}: {e}")

    return total_size

def main():
    path = input("请输入路径: ")

    # 获取路径下的.zip文件
    zip_files = get_zip_files(path)
    if not zip_files:
        print("没有找到.zip文件,程序结束。")
        return

    # 根据文件名和版本号进行排序
    sorted_files = sort_versions(zip_files)

    # 打印重复文件并获取要删除的旧版本文件列表
    old_versions_to_remove = print_duplicates_and_get_old_versions(sorted_files)

    if old_versions_to_remove:
        # 计算旧版本文件占用的总空间
        total_size = calculate_space(old_versions_to_remove, path)
        print(f"\n旧版本文件总占用空间: {total_size / (1024 * 1024):.2f} MB")

        user_input = input("是否删除旧版本文件?(y/n): ").lower()
        if user_input == 'y':
            deleted_size = delete_old_versions(path, old_versions_to_remove)
            print(f"已删除的旧版本文件总占用空间: {deleted_size / (1024 * 1024):.2f} MB")
        else:
            print("未删除任何文件。")
    else:
        print("没有旧版本文件需要删除。")

if __name__ == "__main__":
    main()
    input("按 Enter 键退出...")







评分

1

查看全部评分

回复

使用道具 举报

5

主题

364

帖子

1036

积分

游戏狂人

Rank: 6Rank: 6

贡献度
7
金元
10076
积分
1036
精华
0
注册时间
2009-12-26
舒服的沙发
发表于 2024-10-6 17:52 | 只看该作者
感谢分享!给你点赞!好东西,拿走了,临走顶个贴感谢一下楼主!
回复 支持 反对

使用道具 举报

2

主题

154

帖子

249

积分

中级玩家

Rank: 3Rank: 3

贡献度
2
金元
2414
积分
249
精华
0
注册时间
2012-6-12
硬硬的板凳
发表于 2024-10-18 05:35 | 只看该作者
66666666666666666
回复 支持 反对

使用道具 举报

0

主题

794

帖子

1095

积分

游戏狂人

Rank: 6Rank: 6

贡献度
0
金元
10945
积分
1095
精华
0
注册时间
2018-2-8
冰凉的地板
发表于 2024-10-18 11:39 | 只看该作者
非常感谢分享
回复 支持 反对

使用道具 举报

0

主题

135

帖子

224

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2239
积分
224
精华
0
注册时间
2013-9-10
5#
发表于 2024-10-20 11:26 | 只看该作者
棒棒棒棒棒
回复 支持 反对

使用道具 举报

2

主题

262

帖子

406

积分

高级玩家

Rank: 4

贡献度
0
金元
4060
积分
406
精华
0
注册时间
2011-7-23
6#
发表于 2024-10-20 22:25 | 只看该作者
6666666666666666666
回复 支持 反对

使用道具 举报

16

主题

1094

帖子

1269

积分

游戏狂人

Rank: 6Rank: 6

贡献度
14
金元
12133
积分
1269
精华
0
注册时间
2010-2-27
7#
发表于 2024-10-22 12:28 | 只看该作者
回复可见
回复 支持 反对

使用道具 举报

0

主题

11

帖子

26

积分

新手玩家

Rank: 1

贡献度
0
金元
260
积分
26
精华
0
注册时间
2024-9-17
8#
发表于 2024-10-25 13:36 | 只看该作者
感谢分享111111
回复 支持 反对

使用道具 举报

0

主题

95

帖子

142

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1423
积分
142
精华
0
注册时间
2023-3-4
9#
发表于 2024-10-25 15:35 | 只看该作者
666666666666666
回复 支持 反对

使用道具 举报

0

主题

356

帖子

446

积分

高级玩家

Rank: 4

贡献度
0
金元
4461
积分
446
精华
0
注册时间
2021-3-19
10#
发表于 2024-10-25 23:18 | 只看该作者
fdgdsrgsdfshgdhfg
回复 支持 反对

使用道具 举报

1

主题

2258

帖子

2479

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
16
金元
24150
积分
2479
精华
0
注册时间
2008-10-19
11#
发表于 2024-10-25 23:41 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

87

帖子

186

积分

中级玩家

Rank: 3Rank: 3

贡献度
1
金元
1822
积分
186
精华
0
注册时间
2015-12-19
12#
发表于 2024-10-26 17:15 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

463

帖子

468

积分

高级玩家

Rank: 4

贡献度
1
金元
4639
积分
468
精华
0
注册时间
2008-5-2
13#
发表于 2024-10-27 18:00 | 只看该作者
感谢分享 这个去重很厉害啊
回复 支持 反对

使用道具 举报

35

主题

2034

帖子

2357

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
69
金元
20805
积分
2357
精华
0
注册时间
2008-2-16
14#
发表于 2024-10-27 23:28 | 只看该作者
执行mod去重.exe或mod去重.py后输入异星工厂mods文件夹路径,会打印旧版本信息,根据提示判断是否执行删除旧版本。

回复 支持 反对

使用道具 举报

4

主题

1653

帖子

1969

积分

游戏狂人

Rank: 6Rank: 6

贡献度
0
金元
19686
积分
1969
精华
0
注册时间
2017-7-30
15#
发表于 2024-10-29 20:57 | 只看该作者
楼主一生平安!好人一生平安!感谢分享!论坛因你更精彩!
回复 支持 反对

使用道具 举报

0

主题

285

帖子

418

积分

高级玩家

Rank: 4

贡献度
0
金元
4180
积分
418
精华
0
注册时间
2012-8-9
16#
发表于 2024-10-29 21:36 | 只看该作者
这就非常给力了!感谢分享!看到楼主这么努力分享,我只能顶个贴感谢一下了!
回复 支持 反对

使用道具 举报

0

主题

380

帖子

521

积分

高级玩家

Rank: 4

贡献度
0
金元
5206
积分
521
精华
0
注册时间
2019-9-27
17#
发表于 2024-10-29 23:39 | 只看该作者
感谢分享!论坛因你更精彩!下载试用一下,如果用着不错就给楼主顶贴!
回复 支持 反对

使用道具 举报

2

主题

159

帖子

281

积分

高级玩家

Rank: 4

贡献度
0
金元
2809
积分
281
精华
0
注册时间
2013-5-26
18#
发表于 2024-11-1 19:35 | 只看该作者
666666666
回复 支持 反对

使用道具 举报

2

主题

311

帖子

396

积分

高级玩家

Rank: 4

贡献度
0
金元
3958
积分
396
精华
0
注册时间
2010-7-31
19#
发表于 2024-11-2 15:47 | 只看该作者
这就非常给力了!感谢分享!看到楼主这么努力分享,我只能顶个贴感谢一下了!
回复 支持 反对

使用道具 举报

0

主题

231

帖子

1073

积分

游戏狂人

Rank: 6Rank: 6

贡献度
51
金元
8691
积分
1073
精华
0
注册时间
2009-12-12
20#
发表于 2024-11-9 22:06 | 只看该作者
6666666666666666666666
回复 支持 反对

使用道具 举报

2

主题

1472

帖子

1381

积分

游戏狂人

Rank: 6Rank: 6

贡献度
1
金元
13772
积分
1381
精华
0
注册时间
2008-2-16
QQ
21#
发表于 2024-11-10 00:52 | 只看该作者
感谢分享!给你点赞!看到楼主这么努力分享,我只能顶个贴感谢一下了!
回复 支持 反对

使用道具 举报

0

主题

113

帖子

194

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1939
积分
194
精华
0
注册时间
2015-4-5
22#
发表于 2024-11-17 13:24 | 只看该作者
感谢楼主。
回复 支持 反对

使用道具 举报

14

主题

318

帖子

562

积分

高级玩家

Rank: 4

贡献度
4
金元
5459
积分
562
精华
0
注册时间
2014-3-24
23#
发表于 2024-11-17 17:17 | 只看该作者
f492ffffffgdgfdgd
回复 支持 反对

使用道具 举报

14

主题

323

帖子

510

积分

高级玩家

Rank: 4

贡献度
18
金元
4381
积分
510
精华
0
注册时间
2010-7-29
24#
发表于 2024-11-17 21:55 | 只看该作者
66666666666666
回复 支持 反对

使用道具 举报

0

主题

117

帖子

143

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1432
积分
143
精华
0
注册时间
2019-6-22
25#
发表于 2024-11-19 21:46 | 只看该作者
重.exe或mod去重.py后输入异星工厂mods文件夹路径,会打印旧版本信息,根据提示判断是否执行删除旧
回复 支持 反对

使用道具 举报

0

主题

1185

帖子

1160

积分

游戏狂人

Rank: 6Rank: 6

贡献度
23
金元
10684
积分
1160
精华
0
注册时间
2010-4-19
26#
发表于 2024-11-22 18:19 | 只看该作者
666666666666666666666
回复 支持 反对

使用道具 举报

5

主题

1296

帖子

1433

积分

游戏狂人

Rank: 6Rank: 6

贡献度
14
金元
13768
积分
1433
精华
0
注册时间
2009-7-19
27#
发表于 2024-12-2 15:26 | 只看该作者
看看隐藏内容是什么!谢谢!好东西,拿走了,临走顶个贴感谢一下楼主!
回复 支持 反对

使用道具 举报

6

主题

2673

帖子

3127

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
12
金元
30790
积分
3127
精华
0
注册时间
2009-11-5
28#
发表于 2024-12-23 12:29 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

0

主题

59

帖子

142

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1422
积分
142
精华
0
注册时间
2016-6-23
29#
发表于 2024-12-23 21:57 | 只看该作者
先看看
回复 支持 反对

使用道具 举报

4

主题

1388

帖子

1396

积分

游戏狂人

Rank: 6Rank: 6

贡献度
2
金元
13879
积分
1396
精华
0
注册时间
2012-3-22
30#
发表于 2025-1-24 12:53 | 只看该作者
看起来不错的样子,谢谢分享!!!!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-10 06:29 , Processed in 0.038421 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表