Skip to main content

No project description provided

Project description

fsoopify

GitHub Build Status PyPI

Just make file system oopify.

install

pip install fsoopify

usage

import fsoopify

[file|directory] = fsoopify.NodeInfo.from_path(...)

# api for both file and directory
file.rename()
file.get_parent()
file.is_exists()
file.is_directory()
file.is_file()
file.delete()
file.create_hardlink()

# api for file
file.load_context() # load and dump the file in a context.

# api for directory
directory.create() and directory.ensure_created()
directory.create_file()
directory.iter_items()
directory.list_items()
directory.get_fileinfo() and directory.get_dirinfo()
directory.has_file() and directory.has_directory()

Api

File

You can use fsoopify.FileInfo(...) to create a FileInfo object and use file api.

Prop Api

  • size - a int value with override __str__.

Test Api

  • is_exists()
  • is_file()

Open Api

  • open() - alias for builtin open
  • open_for_read_bytes()
  • open_for_read_text()

Read and Write Api

  • write()
  • write_text()
  • write_bytes()
  • write_from_stream()
  • read()
  • read_text()
  • read_bytes()
  • read_into_stream()

And you can use += for append data:

fi = FileInfo(...)
fi += 'data'
fi += b'data'
fi += FileInfo(other_file)
fi += io.BytesIO(b'data')
...

Serialize Api

  • load()
  • dump()
  • load_context()

The easiest way to dump a json:

FileInfo('a.json').dump(the_obj_to_dump)

Or load:

obj = FileInfo('a.json').load()

The format can auto detect by extension name.

Another way to load and dump a file is load_context():

with FileInfo('a.json').load_context() as ctx:
    ctx.data = the_obj_to_dump

With load_context(lock=True), you can lock the file in the context.

Hash Api

To compute hash for a file:

crc32, md5, sha1 = FileInfo('a.json').get_file_hash('crc32', 'md5', 'sha1')

Directory

You can use fsoopify.DirectoryInfo(...) to create a DirectoryInfo object and use directory api.

Tree Api

The easiest way to batch read files:

DirectoryInfo(...).get_tree()
# {
#      filename: b'file content',
#      sub_dirname: {
#           ...
#      }
# }

# to prevent load all file into memory:
DirectoryInfo(...).get_tree(as_stream=True)

Or batch write files:

tree = {
    'a.txt': b'abc',
    'b.txt': b'cde',
    'sub_dir': {
        'e.txt': b'ddd'
    }
}
DirectoryInfo(...).make_tree(tree)

Optional packages

  • json5 - load or dump json5 file
  • pyyaml - load or dump yaml file
  • toml - load or dump toml file
  • pipfile - load pipfile

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

fsoopify-0.5.2.tar.gz (14.1 kB view hashes)

Uploaded Source

Built Distribution

fsoopify-0.5.2-py3-none-any.whl (17.1 kB view hashes)

Uploaded Python 3

Supported by

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