Formats

Formats#

Collection of submodules that implement specific file format decoder/encoder.

This module offers granular control for experienced users.
Refer to scfile.core for details on available decoder/encoder methods.

Base Components:

Tip

Always use decoder/encoder in context manager (with) for resource safety.

Usage Examples#

Basic Conversion#
from scfile import formats

# Decode MCSB model
with formats.mcsb.McsbDecoder("model.mcsb") as mcsb:
  data = mcsb.decode()  # Get parsed data

# Encode OBJ model
with formats.obj.ObjEncoder(data=data) as obj:
  obj.encode()           # Write data to buffer
  obj.save("model.obj")  # Save to file and close encoder
Get encoded bytes instead of saving#
with formats.obj.ObjEncoder(data=data) as obj:
  # You can use encoder methods right on encode() (chaining)
  output: bytes = obj.encode().getvalue()  # Returns OBJ bytes
Use convert_to() method#
with formats.mcsb.McsbDecoder("model.mcsb") as mcsb:
  # No need to call mcsb.decode()
  # convert_to() creates an encoder and pass decoded data to it
  mcsb.convert_to(formats.obj.ObjEncoder).save("model.obj") # Save and close

  # Or use precreated sugar methods
  mcsb.to_obj().save("model.obj") # Save and close

Formats#