如何使用python 解压 nsz格式文件


2 观看次数
205 字数
0 评论

.nsz 是 Nintendo Switch 压缩 NSP 包,由社区工具 * 定义,本质是对 (NSP)* 的压缩格式。
该格式通常需要通过 NSZ 项目的 Python 实现进行解压。

下面是较直接的技术流程。


1. 安装 NSZ Python 工具

官方实现就是一个 Python 包。

pip install nsz

依赖:

  • Python ≥ 3.8
  • zstandard

安装后会提供 nsz 命令行工具。


2. 解压 .nsz → .nsp

nsz -D game.nsz

参数说明:

参数含义
-DDecompress
game.nsz输入文件

输出:

game.nsp

3. 在 Python 代码中调用

如果你需要 用 Python 脚本自动解压(例如批量处理),可以直接调用模块:

import subprocess

def decompress_nsz(file):
    subprocess.run(["nsz", "-D", file], check=True)

decompress_nsz("game.nsz")

批量示例:

import subprocess
import glob

for file in glob.glob("*.nsz"):
    subprocess.run(["nsz", "-D", file])

4. 纯 Python API(不调用 subprocess)

NSZ 内部也提供模块接口:

from nsz.Fs import factory
from nsz.NszDecompressor import decompress

infile = "game.nsz"
outfile = "game.nsp"

container = factory(infile)
decompress(container, outfile)

不过该 API 版本兼容性较差,实际生产环境通常直接调用 CLI。


5. 常见错误

缺少 zstandard

ModuleNotFoundError: No module named 'zstandard'

解决:

pip install zstandard

文件验证失败

某些 .nsz 需要:

nsz --verify game.nsz

6. 批量自动解压脚本(推荐)

import subprocess
import pathlib

for f in pathlib.Path(".").glob("*.nsz"):
    subprocess.run(["nsz", "-D", str(f)])

✔ 总结

方法推荐度
Python 调 CLI (subprocess)⭐⭐⭐⭐
NSZ Python API⭐⭐
手写解析 NSZ❌ 不现实

评论区

还没有人评论

添加新评论