用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/
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda
当然,我更推荐大家用VSCode编辑器,写代码可惬意了:Python 编程的最好搭档—VSCode 详细指南。
按照流程,接下来你需要下载源代码的Zip版本:
https://github.com/nx-python/PyNX/archive/master.zip
无法下载请在**Python实用宝典 **公众号后台回复: **Switch **获取网盘链接。
解压后将其复制到SD卡的/switch目录下。
接下来就可以编写该源代码中的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自制程序!
全部0条评论
快来发表一下你的评论吧 !