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
Built Distribution
Hashes for agnostic-file-store-0.5.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a12d41442e087d18b11b371b3ed62a179ef8bfa9b51f86f57a1e182a000e89b |
|
MD5 | e12b7d92442232962018a9b25c164cbe |
|
BLAKE2b-256 | 65d0eeaaf633155fe60c84d2f2140499692ce8d696e51fe4fa6ada6ab3f9ee00 |
Hashes for agnostic_file_store-0.5.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9dccf3ff8959c143cb813e99f224cd566cccd7a4907c9d44a00af370764dc424 |
|
MD5 | 1f8e508eeb264f0f4c73bac45b2c5d7f |
|
BLAKE2b-256 | 815e4eddc315284d4b2ddf1d7b2306b3d0468a7a15f2305a5ec641b61d800b8a |