Skip to content

Python project for simplify interaction of other python modules with the file system

License

Notifications You must be signed in to change notification settings

KernelPryanic/fs-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

language license coverage

Description

This module is designed to relief and simplify interaction of your python modules with the file system.

Installation

python setup.py install

or

pip install -e .

or

pip install fs-manager

How to use

For example, you can inherit your class from FSManager class

from fs_manager import FSManager

class Foo(FSManager, ...):
  FSManager.__init__(self, base_path="/some/base", mode=0o744, temporary=True)
    ...

Or you can just use it as an object

from fs_manager import FSManager

with FSManager(base_path="/tmp/base", mode=0o744, temporary=True) as fsm:
  fsm.mkdir(alias="tom", path="tom_dir", mode=0o744, temporary=True)
  fsm.cd("tom")
  fsm.mkdir("tom_dir")
  fsm.mkfile("jerry", "jerry_file", 0o644, True)
  fsm.ls()
  fsm.up()
  fsm.ls()
  fsm.rm("tom")

Save what you did

from fs_manager import FSManager

with FSManager(base_path="/tmp/base", mode=0o744, temporary=True) as fsm:
  fsm.mkdir(alias="tom", path="tom_dir", mode=0o744, temporary=True)
  fsm.cd("tom")
  fsm.mkdir("tom_dir")
  fsm.mkfile("jerry", "jerry_file", 0o644, True)
  fsm.ls()
  fsm.save_all()

...
shutil.copy("/tmp/base/.fs-structure-full.json", "/tmp/another_base/.fs-structure-full.json")
...

with FSManager(base_path="/tmp/another_base", mode=0o744, temporary=True) as fsm:
  fsm.load_all()

Structure will be saved at root to ".fs-structure-full.json". But structure saves automatically when temporary=False. So if you initialize from the same directory, structure loads anyway.

Initialize you fs-manager from the directory on your disk

from fs_manager import FSManager

with FSManager(base_path="/tmp/base", mode=0o744, temporary=False) as fsm:
  fsm.snappy(root_binded=True)
  fsm.cd("some/path")

Thus, if root_binded=True your structure will be initialized from one root. In other words, you'll be able to cd right from the root fs-manager object.

Also you can verify hashsum of files under any prefix like that

from fs_manager import FSManager

with FSManager(base_path="/tmp/base", mode=0o744, temporary=False) as fsm:
  fsm.snappy(root_binded=True)
  fsm.cd("some/path")
  fsm.save_hashsums("sha1")
  ...
  mismatches = fsm.check_hashsums(type="sha1", log_warnings=False)

There is much more inside :)

About

Python project for simplify interaction of other python modules with the file system

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages