Wie kann ich ein Python-Skript selbst ändern?Wie kann ich ein Python-Skript selbst ändern?
Um es einkochen, ich möchte ein Python-Skript haben (run.py
) wie folgt
a = 0
b = 1
print a + b
# do something here such that the first line of this script reads a = 1
Derart, dass das nächste Mal das Skript ausgeführt wird würde es aussehen
a = 1
b = 1
print a + b
# do something here such that the first line of this script reads a = 2
Ist das ist irgendwie möglich? Das Skript verwendet möglicherweise externe Ressourcen. Allerdings sollte alles funktionieren, indem Sie einfach die eine run.py
-Datei ausführen.
EDIT: Es war vielleicht nicht klar genug, aber das Skript sollte sich selbst aktualisieren, keine andere Datei. Sicher, sobald Sie eine einfache Konfigurationsdatei neben dem Skript zulassen, ist diese Aufgabe trivial.
Antwort:
Es ist eigentlich viel einfacher als gedacht. @Khelwoods Vorschlag funktioniert gut, das Skript zu öffnen und seinen eigenen Inhalt zu schreiben, ist völlig unproblematisch. @ Gerrats Lösung funktioniert auch gut. Dies ist, wie ich es habe:
# -*- coding: utf-8 -*-
a = 0
b = 1
print a + b
content = []
with open(__file__,"r") as f:
for line in f:
content.append(line)
with open(__file__,"w") as f:
content[1] = "a = {n}\n".format(n=b)
content[2] = "b = {n}\n".format(n=a+b)
for i in range(len(content)):
f.write(content[i])
Ja, es ist möglich. Tatsächlich gibt es mehrere Möglichkeiten, dieses Ziel zu erreichen. –
Ja, es ist möglich, aber warum? – Jaco
Sie können Ihr Skript mit 'open ('run.py', 'w') ... öffnen und Änderungen daran vornehmen, wenn Sie das möchten. Ist das alles, was du wissen wolltest? – khelwood