Um das Spiel mit einem Emulator namens Redream auszuführen, musste ich die komprimierte Datei für jedes Verzeichnis dekomprimieren, also habe ich einen Stapel erstellt.
Installieren Sie das Paket, um die 7z-Datei zu entpacken. Installieren Sie 7z mit dem folgenden Befehl.
sudo apt-get install -y p7zip-full
Erstellen Sie den folgenden Python-Code und speichern Sie ihn in der Datei batch.py.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import io
import os
import glob
arr = glob.glob("*7z")
#print(arr)
path_w = '7z.sh'
with open(path_w, mode='w') as f:
for str in arr:
dir = str.replace("[GDI] ","").replace("[CDI] ","").replace(".7z","").replace("'","")
tmpstr = str.replace("'","").replace(",","")
os.rename("./" + str , "./" + tmpstr)
try:
if not os.path.exists(dir):
cmds = "7z x '" + tmpstr + "' -o'" + dir + "'\n"
dels = "rm -rf '" + tmpstr + "'\n"
#print(cmds)
#print(dels)
f.write(cmds)
f.write(dels)
except OSError:
print("Error: " + dir)
Ich habe keinen Kommentar zur Quelle geschrieben, deshalb möchte ich ihn hier erklären.
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Dies ist der Teil, der das Paket deklariert, da er die bereitgestellte Methode verwendet.
import io
import os
import glob
#Speichern Sie nur Dateien mit der Erweiterung "7z" im aktuellen Verzeichnis im Array.
arr = glob.glob("*7z")
#Der folgende Ausdruck ist der Code zum Überprüfen des Inhalts des gespeicherten Arrays.
# print(arr)
#Entpacken und löschen Sie komprimierte Dateien in Shell-Skriptdateien
#Gibt den Namen der Shell-Skriptdatei an, in der der Befehl gespeichert wird.
path_w = '7z.sh'
#Öffnen Sie die Shell-Skriptdatei, um den Schreibmodus zu aktivieren
with open(path_w, mode='w') as f:
#Erstellen Sie für jede "7z" -Datei einen Dekomprimierungs- / Löschbefehl.
for str in arr:
#Erstellen Sie den zu dekomprimierenden Verzeichnisnamen aus dem komprimierten Dateinamen.
#Löschen Sie unnötige Zeichenfolgen im Verzeichnisnamen.
dir = str.replace("[GDI] ","").replace("[CDI] ","").replace(".7z","").replace("'","")
#Wenn der Dateiname und der Verzeichnisname die folgenden Zeichenfolgen haben, schlägt die Antwort fehl.
#Löschen Sie das Zeichen. Und ersetzen Sie auch den Dateinamen.
tmpstr = str.replace("'","").replace(",","")
os.rename("./" + str , "./" + tmpstr)
try:
#Wenn der Verzeichnisname nicht vorhanden ist, führen Sie die folgende Verarbeitung durch.
if not os.path.exists(dir):
#Dieser Befehl dekomprimiert die komprimierte Datei.
cmds = "7z x '" + tmpstr + "' -o'" + dir + "'\n"
#Dieser Befehl löscht die entpackte Datei.
dels = "rm -rf '" + tmpstr + "'\n"
#Dies ist der Code zur Bestätigung des Befehls.
#print(cmds)
#print(dels)
#Speichern Sie den Befehl in einer Shell-Skriptdatei.
f.write(cmds)
f.write(dels)
except OSError:
#Ausgabe, wenn ein verzeichnisbezogener Fehler auftritt.
print("Error: " + dir)
Führen Sie den Python-Code mit dem folgenden Befehl aus: Bei der Ausführung wird eine "7z.sh" -Datei generiert.
pi@raspberrypi:~/Downloads/redream/rom $ python batch.py
Überprüfen Sie den Inhalt der Datei mit dem folgenden Befehl. Sie können sehen, dass der Dekomprimierungs- / Löschbefehl für jeden komprimierten Dateinamen generiert wird.
pi@raspberrypi:~/Downloads/redream/rom $ cat 7z.sh
7z x '[GDI] XXXXXXXX.7z' -o'XXXXXXXX'
rm -rf '[GDI] XXXXXXXX.7z'
7z x '[CDI] XXXXXXXX.7z' -o'XXXXXXXX'
rm -rf '[CDI] XXXXXXXX.7z'
Führen Sie die Shell-Skriptdatei mit dem folgenden Befehl aus: Bei der Ausführung wird der Bildschirm zum Dekomprimieren der komprimierten Datei angezeigt. Wenn die Ausführung abgeschlossen ist, können Sie sehen, dass alle komprimierten Dateien gelöscht wurden. Wenn es möglich ist, dass der Dateiname aufgrund eines unerwarteten Zeichenfolgenfehlers gestoppt wird, Fügen Sie in diesem Fall der Verarbeitung des Dateinamens / Verzeichnisnamens einen Ersatz hinzu. Dann sollten Sie es problemlos lösen können.
pi@raspberrypi:~/Downloads/redream/rom $ sh 7z.sh
Wenn auf der SD-Karte nicht genügend Speicherplatz vorhanden ist, schlägt die Dekomprimierung der Datei möglicherweise fehl. Achtung. (Lol)
Damit war es einfach, das Spiel in Retropie OS zu integrieren. Als nächstes bleibt die Spezifikation der GDI / CDI- und Vorschaubilddatei in game.xml. Wenn Sie auf Raspbian ausgeführt werden, müssen Sie die obige game.xml nicht angeben. Es war mühsam, manuell zu komprimieren und zu dekomprimieren, also habe ich es geschafft. War es nützlich? Die Ausnahmebehandlung ist etwas mangelhaft, aber bitte fügen Sie sie bei Bedarf hinzu.
Recommended Posts