Im folgenden Code bin ich im Begriff, eine temporäre Datei zu erstellen und dann den gesamten Inhalt einer TXT-Datei in dieser temporären Datei zu speichern. Dies ist nur ein Beispiel. Ich weiß, dass es keinen Sinn macht, eine Textdatei zu lesen und sie dann in die temporäre Datei zu schreiben. Aber ich möchte meine Frage demonstrieren.Python: Gibt es einen besseren Weg für read()?
Nun, wenn ich die read() -Methode verwenden, bedeutet dies, dass der gesamte Inhalt der Temp-Datei im RAM-Speicher gespeichert ist, richtig? Ich kann die Inhaltsgröße der temporären Datei nicht steuern. Also denke ich darüber nach, ob es eine bessere Möglichkeit gibt, den RAM-Speicher zu schützen. Ich möchte den RAM-Speicher nicht überschwemmen.
# Use the TemporaryFile context manager for easy clean-up
with tempfile.TemporaryFile(delete=True) as tmp:
with open('filename.txt', 'r') as my_file:
for line in my_file:
tmp.write(line)
tmp.seek(0)
exec(tmp.read())
Der Code entspricht nicht der Textbeschreibung. Was ist deine eigentliche Aufgabe? Wollen Sie eine Textdatei als Python - Code ausführen (nach exec (tmp.read()) 'in Ihrem Code) oder wollen Sie den Inhalt einer Textdatei Zeile für Zeile in eine andere kopieren (nach 'für Zeile in Datei: output_file.write (line)' in Ihrem Code). Was ist deine eigentliche Frage? – jfs
@ J. F. Sebastian; Du hast recht. Ich möchte eine Textdatei als Python-Code ausführen. In diesem Fall wird ein Code in einer Textdatei gespeichert. Aber später werde ich die Textdatei auf einem Webserver speichern. Mein Programm greift auf die Textdatei zu, speichert sie in der temporären Datei und führt sie dann aus. – Sophus
Warum machst du dir dann Gedanken über RAM? Führst du es auf einem Mikrocontroller? Wie viel RAM ist verfügbar? Sie haben keine Angst, willkürlichen Code aus dem Internet zu starten, aber Sie befürchten, dass es zu viel Code gibt? Was macht der Code? Ist es sinnvoll, sie Zeile für Zeile auszuführen (mit einem eindeutigen Namespace)? Wenn Sie Daten aus dem Netzwerk lesen; Sie können aufhören, wann immer Sie möchten, aus welchem Grund auch immer. – jfs