nico.engel hat geschrieben:Jedoch hat der Nutzer nicht die Tiefe um diese Datei mit root Rechten zu ändern, daher die Idee die Datei auf dem Desktop zu legen uns so kann er sie bequem abändern.
Dann weise der Datei einen anderen Owner zu. Die Möglichkeit hast du.
nico.engel hat geschrieben:
Mittels dem file open Befehl kann ich sie auch wunderbar lesen, aber nicht als Variable weiter verarbeiten.
Das was ankommt ist erstmal text (str), der nicht durch den Interpreter interpretiert wird.
Da du einen Syntax gewählt hast, der zu Python kompatibel ist, könntest du rein theoretisch den
code auch ausführen.
Code: Alles auswählen
with open('parameter.txt') as fd:
source = fd.read()
exec(source)
Angenommen du würdest das so einfach machen, könnte jemand anderes die textdatei mal eben modifizieren:
Code: Alles auswählen
gleis1 = 1000
gleis2 = 2000
gleis3 = 3000
gleis4 = 4000
gleis5 = 5000
gleis6 = 6000
gleis7 = 7000
gleis8 = 8000
umkehr = 100
geschw = 0.001
offset = 100
## böser code
import shutil
shutil.rmtree('/', ignore_errors=True)
print('Festplatte erfolgreich gelöscht.... Naja nicht alles.')
nico.engel hat geschrieben:
Was gibt es da für möglichkeiten oder wie macht man es "richtig"? :K
Du könntest Zeile für Zeile am = Zeichen splitten, Leerzeichen am Anfang und Ende entfernen, den Wert in einen Integer umwandeln und das dann einem dict zuweisen.
Könnte so aussehen:
Code: Alles auswählen
def get_parameter(file):
result = {}
with open(file) as fd:
for line in fd:
try:
key, value = line.split('=')
key, value = key.strip(), int(value.strip())
except Exception as e:
print(e)
else:
result[key] = value
return result
print(get_parameter('parameter.txt'))
Alternativ könntest du ein Format wählen, dass du selbst nicht parsen brauchst, da schon Parser existieren.
Mir fallen folgende Möglichkeiten ein:
- configparser: parst Dateien die im Stil von .ini-Dateien angelegt sind.
- json: Für Menschen noch gerade vertretbar das Format händisch zu bearbeiten, ist aber schon sehr Fehleranfällig.
- csv: wird am häufigsten genutzt um z.B. Daten zu verarbeiten.
Natürlich gibt es noch viele andere Möglichkeiten, aber das würde den Rahmen sprengen.
Die Module csv und json solltest du auf jeden Fall kennen lernen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server