Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Package a directory to a file, with fast file access and compression support

Project description

PyPI PyPI - Python Version Build Status Documentation Status codecov Codacy Badge

fast_package_file

Package a directory to a file, with fast file access and compression support

import fast_package_file

# Package a directory into a file
fast_package_file.build('a_directory', 'a_package.file')

# Prepare a package file
data_package = fast_package_file.PackagedDataFile('a_package.file')

# Load a file from the packed directory and save it
with open('any.file', 'wb') as any_file:
  data_package.load_file('path\\to\\any.file')

# Or just get the raw binary data
from PIL import Image
i = Image.open(io.BytesIO(data_package.load_file('image.png')))

# Some other useful functions
data_package.load_bulk(prefix='audio\\sfx\\', postfix='.wav')
fast_package_file.oneshot('a_package.file', 'path\\to\\any.file')
fast_package_file.oneshot_bulk('a_package.file', prefix='audio\\sfx\\', postfix='.wav')

Installation

From PyPI:

pip install fast-package-file

Or from Github:

pip install git+git://github.com/Kataiser/fast-package-file.git@master#egg=fast_package_file

Documentation

More details will be available at https://fast-package-file.readthedocs.io/en/latest/

Features

  • Is fast because only the data needed is loaded from the package file, total package size is irrelevant
  • Obfuscates files from (most) users
  • Like a .zip file, but doesn't decompress the entire thing when reading just one file
  • Includes the entire directory and subdirectories, not just surface-level files
  • Files are compressed with Gzip, but only if compression improves file size (per file) and is enabled (per package file)
  • Pretty good error handling when loading package files, just catch fast_package_file.PackageDataError
  • Inspired by video game packaging, such as UE4's .pak or GTA V's .rpf formats
  • Cross-platform, has CI for Linux, MacOS, and Windows

Contribute

License

The project is licensed under the MIT license.

Project details


Download files

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

Files for fast-package-file, version 1.1
Filename, size File type Python version Upload date Hashes
Filename, size fast_package_file-1.1-py3-none-any.whl (7.1 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size fast_package_file-1.1.tar.gz (5.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page