Bibliothek zur Dateiverwaltung. Zwei Backends: Dateisystem, s3

Ich träume von einer Python-Bibliothek, die das Dateihandling meiner Anwendung abstrahiert.

Die Anwendung sollte in zwei verschiedenen Konfigurationen ausgeführt werden:

  1. Kein Speicherserver. Alle Dateioperationen werden auf der lokalen Festplatte ausgeführt.
  2. Mit Speicherserver. Alle Dateioperationen sollten über s3 erledigt werden.

Ich möchte eine Trennung der Interessen vornehmen .

Dem Anwendungscode sollte es egal sein, welche Konfiguration verwendet wird. Die Auswahl der richtigen Konfiguration (mit oder ohne Speicherserver) erfolgt über das Konfigurationsmanagement.

Ich brauche nicht alle Dateioperationen, die ich über osund machen kann os.path. Ich brauche nur alle Operationen, die über s3 durchgeführt werden können.

Andere erforderliche Funktionen:

  • Open Source: BSD oder LGPL, nicht GPL
  • Unterstützung für Linux. Andere Betriebssysteme spielen in diesem Zusammenhang keine Rolle.

Unterscheidung / außerhalb des Geltungsbereichs

Ich möchte nicht alle Dateioperationen (wie os.walk()). Ich brauche nur die grundlegenden Speicher-APIs von s3, aber ohne einen laufenden Speicherserver.

Antworten (2)

Ich schlage vor, Sie probieren Siilo aus .

Es ist eine Speicherabstraktionsschicht für Python.

Siilo bietet Ihnen eine Basis-API mit Operationen wie openund delete, die Sie verwenden können, ohne sich Gedanken darüber zu machen, was unten verwendet wird.

Es unterstützt:

Minuspunkte:

  • Es scheint, dass nur sehr wenige Operationen implementiert werden. Wenn ich den Code richtig verstehe, müssen writeSie ihn bei Bedarf selbst implementieren (in diesem Fall senden Sie bitte eine Pull-Anfrage).
  • Keine Dokumentation oder Codebeispiele
  • Gemeinschaft ist klein und sehr ruhig

Pluspunkte:

  • Open-Source (MIT)
  • Sehr leicht

Es gibt eine Python-Bibliothek, um die boto (s3)-Bibliothek zu verspotten:

https://github.com/spulec/moto

Moto ist eine Bibliothek, die es Ihren Python-Tests ermöglicht, die Boto-Bibliothek einfach zu verspotten

Es kann im eigenständigen Servermodus ausgeführt werden, wenn Sie von einer anderen Programmiersprache aus darauf zugreifen möchten