27th June 2017

acefile - read/test/extract ACE 1.0 and 2.0 archives in pure python

This single-file, pure-python, no-dependencies python 3 implementation is designed to be used both as a library and as a stand-alone unace utility. The library API is modeled after tarfile. As pure-python implementation, it is significantly slower than native implementations.

This implementation supports up to version 2.0 of the ACE archive format, including the EXE, DIFF, PIC and SOUND modes of ACE 2.0 and including password protected archives.

This is an implementation from scratch, based on the 1998 document titled “Technical information of the archiver ACE v1.2” by Marcel Lemke, using unace 2.5 and WinAce 2.69 by Marcel Lemke as reference implementations.


  • Complete python API to archive and archive member metadata
  • Decompress archives in memory without shelling out to unace or touching the disk
  • Not affected by vulnerabilities present in official unace 2.5 (Debian’s unace-nonfree has some or all of those patched)
  • Portable
  • BSD licensed

Why not

  • Currently two orders of magnitude slower than native implementations

Find out more

See the GitHub project and PyPI pages for details:

Fork me on GitHub