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

注册 登录

QQ登录

只需一步,快速开始

查看: 1821|回复: 38
打印 上一主题 下一主题

[分享] mod去重工具

[复制链接]

80

主题

478

帖子

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

主题

373

帖子

1053

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

2

主题

155

帖子

251

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

794

帖子

1107

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

0

主题

135

帖子

225

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

2

主题

263

帖子

410

积分

高级玩家

Rank: 4

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

使用道具 举报

16

主题

1094

帖子

1271

积分

游戏狂人

Rank: 6Rank: 6

贡献度
14
金元
12148
积分
1271
精华
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

主题

357

帖子

448

积分

高级玩家

Rank: 4

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

使用道具 举报

1

主题

2256

帖子

2489

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

2

主题

88

帖子

189

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

463

帖子

468

积分

高级玩家

Rank: 4

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

使用道具 举报

35

主题

2039

帖子

2371

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

回复 支持 反对

使用道具 举报

4

主题

1661

帖子

1979

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

0

主题

287

帖子

421

积分

高级玩家

Rank: 4

贡献度
0
金元
4210
积分
421
精华
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

帖子

282

积分

高级玩家

Rank: 4

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

使用道具 举报

2

主题

314

帖子

404

积分

高级玩家

Rank: 4

贡献度
0
金元
4043
积分
404
精华
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

主题

1502

帖子

1420

积分

游戏狂人

Rank: 6Rank: 6

贡献度
1
金元
14159
积分
1420
精华
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

主题

339

帖子

587

积分

高级玩家

Rank: 4

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

使用道具 举报

14

主题

323

帖子

511

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

119

帖子

146

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1462
积分
146
精华
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

主题

1295

帖子

1433

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

7

主题

2699

帖子

3195

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

1

主题

73

帖子

158

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

4

主题

1441

帖子

1454

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-6 16:21 , Processed in 0.038546 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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