2016-05-11 36 views
0

Ich schreibe eine AI, die Befehle aus Textdateimodulen ausführt. In dem Ordner, in dem sich mein Python-Programm befindet, befindet sich eine Gruppe von Textdateien. Sie verfügen jeweils über Sätze von Schlüsselwort-Befehlssätze wie folgt formatiert:Gibt es irgendwelche unbenutzten Symbole in Python?

Stichwort 1, Funktion 1 | Schlüsselwort 2, Funktion 2

Mein Programm in einer Schleife durch alle diese Dateien und erstellt eine Liste von Keyword-Befehlssätze . Zum Beispiel von 2 Textdateien,

Stichwort 1, Funktion 1 | Schlüsselwort 2, Funktion 2 und Schlüsselwort 3, Funktion 3,

die Liste erzeugte

[[‘ Schlüsselwort 1 ',' Funktion 1 '], [' Schlüsselwort 2 ',' Funktion 2 '], [' Schlüsselwort 3 ',' Funktion 3 ']].

Nun werden die Funktion Portionen sind Befehle über die exec Befehl ausführen, aber ich möchte die Möglichkeit haben, für jede Funktion mehrere Zeilen Code auszuführen. Ich denke, dass ich dies erreichen werde, indem ich ein spezielles Symbol hinzufüge, um eine neue Zeile zu symbolisieren, und die Befehle zu einer Liste hinzufüge, dann iteriere sie durch. Meine Frage ist, gibt es irgendein Symbol, das ich sicher verwenden könnte, das keine anderen Befehle durcheinander bringen wird, die diese Symbole benutzen können? Zum Beispiel, wenn ich % verwende, würde es den Modulo-Befehl durcheinander bringen.

Hier ist mein Code ab sofort, falls Sie es brauchen, obwohl ich nicht wirklich denke, dass Sie würden.

# Setup 
import os 
import locale 

# Load modules 
functions = [] 
print(str(os.getcwd())) 
print(str(os.getcwd().replace('ZAAI.py', ''))) 
for file in os.listdir(os.getcwd().replace('ZAAI.py', '')): 
    if file.endswith('.txt'): 
     openFile = open(os.getcwd().replace('ZAAI.py', '') + file, encoding=locale.getpreferredencoding()) 
     openFileText = openFile.read() 
     print(openFileText) 
     for item in openFileText.split('|'): 
      functions.append(item.split(',')) 
print(functions) 
+4

Verwenden Sie ein leistungsfähigeres, flexibleres und bewährteres Format zum Speichern Ihrer Daten wie JSON. Mach keine Hacks so. –

+0

Haben Sie überlegt, ein vorhandenes Serialisierungsformat wie XML, YAML oder JSON zu verwenden? Es könnte auch möglich sein, eines der "Pickle" -Formate zu verwenden. Allerdings sind die Multibyte-Symbole in Unicode im Allgemeinen unbenutzt, zum Beispiel ein Schneemann. – cdarke

Antwort

1

Nun, unterstützt Python mehrere Ausdrücke/Anweisungen in einer einzigen Zeile mit einem Semikolon ;

a = 1; b = 2; c = a + b; print c 

Also, Sie brauchen kein eigenes Neuzeilensymbol erstellen mehrzeilige Python-Skripte zu behandeln. Davon abgesehen sollten Sie das wahrscheinlich nicht tun.

Sie erstellen im Wesentlichen eine etwas eingeschränkte Plugin-Architektur. Leute haben das schon mal gemacht. Es gibt Lose von options for doing this in python. Ich kann mir nur vorstellen, wie viel Frustration jemand haben könnte, der eine Ihrer "plugin" -Dateien mit Dutzenden von Befehlen betrachtet, von denen jeder ein 30-Zeilen-Python-Skript in einer einzigen Zeile hat.

0

Nach the documentation on literals, Die $ und ? Zeichen verwendet werden, nicht in Python zu einem anderen Zweck als Stringliterale und Kommentare.

+0

Sie sind Meta-Zeichen für reguläre Ausdrücke. – cdarke

+0

@cdarke Was sind Zeichenkettenliterale. – L3viathan

+0

Zusätzlich können sie als '\ x24' und' \ x3f' maskiert werden. – ppperry