VPK is Valve's file format for storing game assets. Pythonic access to VPK files and their contents together with a cli tool.
Works on: python2.7, python3.4+, pypy, and pypy3
You can grab the latest release from https://pypi.python.org/pypi/vpk or via pip
pip install vpkThe VPK instance is iterable in the standard ways and produces paths to files
import vpk pak1 = vpk.open("/d/Steam/steamapps/common/dota 2 beta/dota/pak01_dir.vpk") for filepath in pak1: print filepathReading a specifc file is done by passing the file path to get_file() method, which returns a VPKFile instance, which acts as a regular file instance. Writting is not possible.
pakfile = pak1.get_file("scripts/emoticons.txt") pakfile = pak1["scripts/emoticons.txt"] print pakfile.read().decode('utf-16le')------------------------------------------------- "emoticons" { // An ID of zero is invalid "1" { "image_name" "wink.png" "ms_per_frame" "100" ... Saving a file is just as easy.
pakfile.save("./emoticons.txt")The module supports creating basic VPKs. Multi archive paks are not yet supported.
newpak = vpk.new("./some/directory") newpak.save("file.vpk") pak = newpak.save_and_open("file.vpk")A command line utility is also included
usage: vpk [-h] [--version] [-l] [-la] [-x OUT_LOCATION] [-nd] [-t] [-c DIR] [-p] [-f WILDCARD | -re REGEX | -name WILDCARD] [-v] file Manage Valve Pak files optional arguments: -h, --help show this help message and exit --version show program's version number and exit Main: file Input VPK file -l, --list List file paths -la List file paths, crc, size -x OUT_LOCATION, --extract OUT_LOCATION Extract files to directory -nd, --no-directories Don't create directries during extraction -t, --test Verify contents -c DIR, --create DIR Create VPK file from directory -p, --pipe Write file contents to stdout Filters: -f WILDCARD, --filter WILDCARD Wildcard filter for file paths -re REGEX, --regex REGEX Regular expression filter for file paths -name WILDCARD Filename wildcard filter -v, --invert-match Use filters for exclusion Check out https://github.com/SteamDatabase/ValveResourceFormat/