Biblioteca para la gestión de archivos. Dos backends: sistema de archivos, s3

Estoy soñando con una biblioteca de Python que abstraiga el manejo de archivos de mi aplicación.

La aplicación debe ejecutarse en dos configuraciones diferentes:

  1. Sin servidor de almacenamiento. Todas las operaciones de archivo se realizan en el disco local.
  2. Con servidor de almacenamiento. Todas las operaciones de archivo deben realizarse a través de s3.

Me gustaría hacer una separación de preocupaciones .

Al código de la aplicación no debería importarle qué configuración se usa. La elección de la configuración adecuada (con o sin servidor de almacenamiento) se realiza a través de la gestión de configuración.

No necesito todas las operaciones de archivos que puedo hacer a través de osy os.path. Solo necesito todas las operaciones que se pueden realizar a través de s3.

Otras características requeridas:

  • Código abierto: BSD o LGPL, no GPL
  • Soporte para Linux. Otros sistemas operativos no son importantes en este contexto.

Distinción / fuera de alcance

No quiero todas las operaciones de archivos (como os.walk()). Solo necesito las API de almacenamiento fundamentales de s3, pero sin un servidor de almacenamiento en ejecución.

Respuestas (2)

Te sugiero que le des una oportunidad a Siilo .

Es una capa de abstracción de almacenamiento para Python.

Siilo le brinda una API base con operaciones como openy delete, que puede usar sin preocuparse por lo que se usa a continuación.

Es compatible con:

Puntos negativos:

  • Parece que se implementan muy pocas operaciones. Si entiendo el código correctamente, si lo necesita write, tendrá que implementarlo usted mismo (en ese caso, envíe una solicitud de extracción)
  • Sin documentación ni muestras de código.
  • La comunidad es pequeña y muy tranquila.

Puntos a favor:

  • Código abierto (MIT)
  • muy ligero

Hay una biblioteca de Python para simular la biblioteca boto (s3):

https://github.com/spulec/moto

Moto es una biblioteca que permite que sus pruebas de python simulen fácilmente la biblioteca boto

Puede ejecutarse en modo de servidor independiente, si desea acceder desde un lenguaje de programación diferente