用Python開發(fā)Switch程序,在你的Switch上運行Python代碼,你需要用到一個名為PyNX的開源工具,操作流程如下:
1. 用讀卡器將SD卡插入開發(fā)設(shè)備(電腦or筆記本)中
2. 將PyNX的Zip版本的內(nèi)容復(fù)制到SD卡的/switch目錄下
3. 編輯main.py文件, 將你的代碼邏輯寫入該文件中
4. 將SD卡插入Switch
5. 在Homebrew菜單中運行PyNX
聽起來挺簡單,不過其中第5步的Homebrew菜單你需要通過特殊的方法來打開,這里不過多描述,請閱讀這篇文章:
https://switch.homebrew.guide/
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。
如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda
當然,我更推薦大家用VSCode編輯器,寫代碼可愜意了:Python 編程的最好搭檔—VSCode 詳細指南。
按照流程,接下來你需要下載源代碼的Zip版本:
https://github.com/nx-python/PyNX/archive/master.zip
無法下載請在**Python實用寶典 **公眾號后臺回復(fù): **Switch **獲取網(wǎng)盤鏈接。
解壓后將其復(fù)制到SD卡的/switch目錄下。
2.編寫簡單的備份工具
接下來就可以編寫該源代碼中的main.py文件了,這個就是我們DIY程序的主要代碼。
首先,需要導(dǎo)入一些庫以開始在我們的自制應(yīng)用程序上工作,主要用到了作者的nx包。此外,我們還想向用戶顯示選擇菜單,因此我們也應(yīng)該導(dǎo)入AnsiMenu:
import nx
from nx.utils import AnsiMenu
接下來,創(chuàng)建常量來存儲《塞爾達傳說:狂野的呼吸》和《超級馬里奧·奧德賽》的名稱ID:
# title IDs are hexadecimal numbers
BOTW_TITLE_ID = 0x01007EF00011E000
SMO_TITLE_ID = 0x0100000000010000
創(chuàng)建兩個列表,將其用于菜單欄。用戶可以選擇的標題名稱在中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]
設(shè)置完列表后就可以使用AnsiMenu實用程序類創(chuàng)建菜單。此菜單將允許用戶選擇將保存數(shù)據(jù)備份的游戲名稱:
select_title_menu = AnsiMenu(title_names)
每個Python程序的主要執(zhí)行流程最好進行如下包裝:
if __name__ == '__main__':
現(xiàn)在可以使用其query方法呈現(xiàn)查詢菜單:
selected_index = select_title_menu.query()
該query方法返回用戶選擇的索引(index),該索引現(xiàn)在存儲在selected_index變量中。由于我們先前創(chuàng)建的兩個列表的順序相等,因此我們可以使用索引從title_ids列表中獲取游戲ID :
selected_title_id = title_ids[selected_index]
selected_title_id現(xiàn)在包含所選的游戲ID。現(xiàn)在,我們可以使用此游戲ID創(chuàng)建一個功能Title對象:
selected_title = nx.titles[selected_title_id]
現(xiàn)在,我們需要備份所選擇的游戲數(shù)據(jù)。為此,我們需要掛載游戲的savedata。這需要通過selected_title對象的savedata來完成:
with selected_title.savedata as savedata:
savedata.backup()
這將創(chuàng)建數(shù)據(jù)備份 /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代碼創(chuàng)建了第一個Switch自制程序!
-
Switch
+關(guān)注
關(guān)注
1文章
533瀏覽量
58224 -
程序
+關(guān)注
關(guān)注
117文章
3785瀏覽量
81009 -
代碼
+關(guān)注
關(guān)注
30文章
4780瀏覽量
68539 -
python
+關(guān)注
關(guān)注
56文章
4793瀏覽量
84633
發(fā)布評論請先 登錄
相關(guān)推薦
評論