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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file fsoopify-0.5.2.tar.gz.

File metadata

  • Download URL: fsoopify-0.5.2.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.1

File hashes

Hashes for fsoopify-0.5.2.tar.gz
Algorithm Hash digest
SHA256 db06b87c9617dd8c04619542d3cb4dd5e40e5c0f66eea489e6545c6112f5655b
MD5 d678b49436a1924781e712b74e339c08
BLAKE2b-256 65a64f41722ae258671c18678fbe240bc6d87ed9f40d3702318f0434f9fc9f59

See more details on using hashes here.

File details

Details for the file fsoopify-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: fsoopify-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.1

File hashes

Hashes for fsoopify-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 54c738f23ba86b8912bbc0524438dc2e30e736922a48a2a5ca61a0a70f772ba5
MD5 d7827f781d27096fabd5d7f944b32d34
BLAKE2b-256 d7c7995ed5470b5833e16750279a82e502028051ab911a4624cac17231a7efd2

See more details on using hashes here.

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