用Python开发Switch程序,在你的Switch上运行Python代码,你需要用到一个名为PyNX的开源工具,操作流程如下:
1.用读卡器将SD卡插入开发设备(电脑or笔记本)中
2.将PyNX的Zip版本的内容复制到SD卡的/switch目录下
3.编辑main.py文件, 将你的代码逻辑写入该文件中
4.将SD卡插入Switch
5.在Homebrew菜单中运行PyNX
听起来挺简单,不过其中第5步的Homebrew菜单你需要通过特殊的方法来绕过Switch的限制,这里不过多描述,可以看这篇文章:
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 import AnsiMenu
# 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]))
恭喜,你已使用Python创建了第一个Switch自制程序!
文章增删改自作者的tutorial, 感谢他:
https://nx-python.readthedocs.io/en/latest/getting_started/tutorial.html
我们的文章到此就结束啦,如果你喜欢我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典