用14行Python代码创建Switch自制程序

描述

用Python开发Switch程序,在你的Switch上运行Python代码,你需要用到一个名为PyNX的开源工具,操作流程如下:

1. 用读卡器将SD卡插入开发设备(电脑or笔记本)中

2. 将PyNX的Zip版本的内容复制到SD卡的/switch目录下

3. 编辑main.py文件, 将你的代码逻辑写入该文件中

4. 将SD卡插入Switch

5. 在Homebrew菜单中运行PyNX

听起来挺简单,不过其中第5步的Homebrew菜单你需要通过特殊的方法来打开,这里不过多描述,请阅读这篇文章:
https://switch.homebrew.guide/

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。

如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

当然,我更推荐大家用VSCode编辑器,写代码可惬意了:Python 编程的最好搭档—VSCode 详细指南

按照流程,接下来你需要下载源代码的Zip版本:
https://github.com/nx-python/PyNX/archive/master.zip

无法下载请在**Python实用宝典 **公众号后台回复: **Switch **获取网盘链接。

解压后将其复制到SD卡的/switch目录下。

2.编写简单的备份工具

接下来就可以编写该源代码中的main.py文件了,这个就是我们DIY程序的主要代码。

首先,需要导入一些库以开始在我们的自制应用程序上工作,主要用到了作者的nx包。此外,我们还想向用户显示选择菜单,因此我们也应该导入AnsiMenu:

import nx
from nx.utils import AnsiMenu

接下来,创建常量来存储《塞尔达传说:狂野的呼吸》和《超级马里奥·奥德赛》的名称ID:

# title IDs are hexadecimal numbers
BOTW_TITLE_ID = 0x01007EF00011E000
SMO_TITLE_ID = 0x0100000000010000

创建两个列表,将其用于菜单栏。用户可以选择的标题名称在中title_name。title_ids用于以相同顺序存储游戏ID:

title_names = ["The Legend of Zelda - Breath of the Wild", "Super Mario Odyssey"]
title_ids = [BOTW_TITLE_ID, SMO_TITLE_ID]

设置完列表后就可以使用AnsiMenu实用程序类创建菜单。此菜单将允许用户选择将保存数据备份的游戏名称:

select_title_menu = AnsiMenu(title_names)

每个Python程序的主要执行流程最好进行如下包装:

if __name__ == '__main__':

现在可以使用其query方法呈现查询菜单:

selected_index = select_title_menu.query()

该query方法返回用户选择的索引(index),该索引现在存储在selected_index变量中。由于我们先前创建的两个列表的顺序相等,因此我们可以使用索引从title_ids列表中获取游戏ID :

selected_title_id = title_ids[selected_index]

selected_title_id现在包含所选的游戏ID。现在,我们可以使用此游戏ID创建一个功能Title对象:

selected_title = nx.titles[selected_title_id]

现在,我们需要备份所选择的游戏数据。为此,我们需要挂载游戏的savedata。这需要通过selected_title对象的savedata来完成:

with selected_title.savedata as savedata:
    savedata.backup()

这将创建数据备份 /backups/savedata/{title_id}/。当然你还可以提供自己的备份路径,如下所示:

with selected_title.savedata as savedata:
    savedata.backup('/savedata_backups/{}/'.format(title_names[selected_index]))

完整代码如下:

import nx
from nx.utils importAnsiMenu
# title IDs are hexadecimal numbers
BOTW_TITLE_ID =0x01007EF00011E000
SMO_TITLE_ID =0x0100000000010000
title_names =["The Legend of Zelda - Breath of the Wild","Super Mario Odyssey"]
title_ids =[BOTW_TITLE_ID, SMO_TITLE_ID]
select_title_menu =AnsiMenu(title_names)
if __name__ =='__main__':
    selected_title = select_title_menu.query()
    selected_title = title_ids[selected_title]
    selected_title = nx.titles[selected_title]
    with selected_title.savedata as savedata:
        savedata.backup('/savedata_backups/{}/'.format(title_names[selected_index]))

恭喜,你已使用14行Python代码创建了第一个Switch自制程序!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分