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

注册 登录

QQ登录

只需一步,快速开始

查看: 935|回复: 32
打印 上一主题 下一主题

[分享] mod去重工具

[复制链接]

80

主题

478

帖子

952

积分

超级玩家

Rank: 5Rank: 5

贡献度
81
金元
6279
积分
952
精华
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

主题

273

帖子

737

积分

超级玩家

Rank: 5Rank: 5

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

使用道具 举报

2

主题

118

帖子

174

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

768

帖子

941

积分

超级玩家

Rank: 5Rank: 5

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

使用道具 举报

0

主题

112

帖子

187

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

1

主题

159

帖子

272

积分

高级玩家

Rank: 4

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

使用道具 举报

16

主题

1061

帖子

1182

积分

游戏狂人

Rank: 6Rank: 6

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

主题

74

帖子

107

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

335

帖子

415

积分

高级玩家

Rank: 4

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

使用道具 举报

1

主题

2100

帖子

2203

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

2

主题

82

帖子

176

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

443

帖子

434

积分

高级玩家

Rank: 4

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

使用道具 举报

33

主题

1851

帖子

2000

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

回复 支持 反对

使用道具 举报

4

主题

1147

帖子

1386

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

0

主题

266

帖子

379

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

282

帖子

385

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

121

帖子

196

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

289

帖子

467

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

225

帖子

1051

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

2

主题

1403

帖子

1291

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

0

主题

109

帖子

185

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

14

主题

272

帖子

423

积分

高级玩家

Rank: 4

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

使用道具 举报

14

主题

301

帖子

476

积分

高级玩家

Rank: 4

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

使用道具 举报

0

主题

105

帖子

116

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

0

主题

1139

帖子

1079

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

5

主题

1148

帖子

1247

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

6

主题

2029

帖子

2306

积分

游戏达人

Rank: 7Rank: 7Rank: 7

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

使用道具 举报

0

主题

29

帖子

103

积分

中级玩家

Rank: 3Rank: 3

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

使用道具 举报

3

主题

1299

帖子

1284

积分

游戏狂人

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-24 05:37 , Processed in 0.453893 second(s), 19 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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