2016-08-09 6 views
-2

Ich lerne immer noch Python und entwickle derzeit eine API (künstliche persönliche Assistenz wie Siri oder Cortana). Ich habe mich gefragt, ob es eine Möglichkeit gibt, Code per Eingabe zu aktualisieren. Zum Beispiel, wenn ich eine Liste hätte - wäre es möglich, einen neuen Gegenstand PERMANENTly hinzuzufügen, selbst nachdem das Programm beendet wurde.Können Sie Python-Code dauerhaft durch Eingabe ändern?

Ich lese, dass Sie SQLite verwenden müssten, ist das wahr? Und gibt es noch andere Möglichkeiten?

+1

Dies ist ein XY-Problem. Wenn Sie den Code nicht ändern möchten, suchen Sie nach einer Möglichkeit, Daten zwischen dem Ausführen des Programms zu speichern. –

Antwort

0

Es gibt viele Methoden, wie Sie Ihre Daten persistent machen können. Es hängt von der Aufgabe, auf die Umwelt usw. Nur ein paar Beispiele:

  • Dateien (JSON, DBM, Pickle)
  • NoSQL-Datenbanken (Redis, MongoDB, etc.)
  • SQL-Datenbanken (sowohl Serverless- als auch Client-Server: sqlite, MySQL, PostgreSQL usw.)

Der einfachste/einfachste Ansatz ist die Verwendung von Dateien. Es gibt sogar Module, die es erlauben, es transparent zu machen. Sie arbeiten einfach wie immer mit Ihren Daten.

Siehe zum Beispiel shelve.

Aus der Dokumentation:

A „Regal“ ist ein persistent, Wörterbuch-ähnliches Objekt. Der Unterschied mit „dbm“ Datenbanken ist, dass die Werte (nicht die Tasten!) In einem Regal im Wesentlichen beliebige Python-Objekte sein können - alles, was die Beize Modul verarbeiten kann. Dazu gehören die meisten Klasseninstanzen, rekursive Datentypen, und Objekte mit vielen gemeinsamen Unterobjekten. Die Schlüssel sind gewöhnliche Zeichenfolgen.

Anwendungsbeispiel:

import shelve 

s = shelve.open('test_shelf.db') 
try: 
    s['key1'] = { 'int': 10, 'float':9.5, 'string':'Sample data' } 
finally: 
    s.close() 

Sie mit s arbeiten ganz normal, da es nur ein normales Wörterbuch waren. Und es wird automatisch auf der Festplatte (in der Datei test_shelf.db in diesem Fall) gespeichert.

In diesem Fall wird Ihr Wörterbuch ist persistent und nicht seine Werte nach dem Neustart des Programms verlieren.

Mehr darauf:

Eine weitere Option ist Beize zu verwenden, die Sie auch Persistenz gibt, aber nicht auf magische Weise: Sie müssen Daten lesen und schreiben allein.

Vergleich zwischen shelve und pickle:

1

Hallo J Nowak

denke ich, was Sie wollen, um die Eingangsdaten in einer Datei (zB tun speichern ist. TXT-Datei). Sie können den folgenden Link sehen, der Ihnen zeigt, wie Sie in eine Textdatei lesen und schreiben können.

How to read and write to text file in Python