Skip to main content

An agnostic, easy-to-use module for different file systems (Memory | local | Samba (SMB) | NFS | Amazon S3)

Project description

AFS - Agnostic File Storage

Goals and motivations

The purpose of this module is to offer an agnostic, easy-to-use module for different file systems (At present time, just local and SMB/CIFS). The initial use of this module was provide an easy path to translate local file systems operations to a network samba server.

Example of use

So, you can translate code like this:

if os.path.isdir('/tmp/token.txt'):
    if not os.path.isdir('/tmp/results'):
        os.mkdir('/tmp/results')
    with open('/tmp/results/data.txt', 'wb') as f:
        f.write('This is an example\n')

To something like this (which must work identical):

with afs.connect('temp') as fs:
    if not fs.isdir('results'):
        fs.mkdir('results')
    fs.cd('results')
    fs.save('data.txt', 'This is an example\n')

Usually you need to iterate a list of directories checking for the existence of the dir, create if needed, and then changing to the dir, for every directory::

dirs = ['media', 'public', '2016', 'sep', '14']
with afs.connect('static') as fs:
    for dir in dirs:
        if not fs.is_dir(dir):
            fs.mkdir(dir)
        fs.cd(dir)
    # You can save the file now

Using the set_path method make all this steps with one single call::

with afs.connect('static') as fs:
    fs.set_path('media', 'public', '2016', 'sep', '14')
    # You can save the file now

The entry temp is defined in a configuration file, using a format similar to windows .INI files, like this:

[temp]
kind: local
base: /tmp

We can now switch to another directory by just replacing the temp base entry to the desired base path, for example. More interesting, you can change to a network SMB Server, modifying the configuration file to:

[temp]
kind: smb
username: samba_user
password: samba_password
host: nas
domain: mycompany.com
service: test$

Things to do

  • Add more storage file systems: NFS, Amazon S3, SFTP

  • Improve security, nobody likes password stored as plain text in configuration files.

  • More tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agnostic-file-store-0.5.4.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

agnostic_file_store-0.5.4-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file agnostic-file-store-0.5.4.tar.gz.

File metadata

  • Download URL: agnostic-file-store-0.5.4.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.7.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10

File hashes

Hashes for agnostic-file-store-0.5.4.tar.gz
Algorithm Hash digest
SHA256 8a12d41442e087d18b11b371b3ed62a179ef8bfa9b51f86f57a1e182a000e89b
MD5 e12b7d92442232962018a9b25c164cbe
BLAKE2b-256 65d0eeaaf633155fe60c84d2f2140499692ce8d696e51fe4fa6ada6ab3f9ee00

See more details on using hashes here.

File details

Details for the file agnostic_file_store-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: agnostic_file_store-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.7.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10

File hashes

Hashes for agnostic_file_store-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9dccf3ff8959c143cb813e99f224cd566cccd7a4907c9d44a00af370764dc424
MD5 1f8e508eeb264f0f4c73bac45b2c5d7f
BLAKE2b-256 815e4eddc315284d4b2ddf1d7b2306b3d0468a7a15f2305a5ec641b61d800b8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page