用Python開發Switch程序,在你的Switch上運行Python代碼,你需要用到一個名為PyNX的開源工具,操作流程如下:
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自制程序!
-
Switch
+關注
關注
1文章
532瀏覽量
58162 -
程序
+關注
關注
116文章
3777瀏覽量
80851 -
代碼
+關注
關注
30文章
4748瀏覽量
68356 -
python
+關注
關注
56文章
4782瀏覽量
84453
發布評論請先 登錄
相關推薦
評論