#!/usr/bin/env python import os import subprocess for root, dirs, files in os.walk("."): for name in files: base, ext = os.path.splitext(name) if name.endswith(".zip"): cmd = ["unzip"] elif name.endswith(".7z"): cmd = ["7z", "e"] elif name.endswith(".rar"): cmd = ["unrar", "x"] elif name.endswith('.tar'): cmd = ["tar", "xf"] elif name.endswith('.tar.gz'): cmd = ["tar", "xzf"] elif name.endswith('.tar.xz'): cmd = ["tar", "xJf"] else: continue filepath = os.path.join(root, name) dirpath = os.path.join(root, base) print(filepath) os.mkdir(dirpath) cmd.append(os.path.realpath(filepath)) r = subprocess.run(cmd, cwd=dirpath) r.check_returncode() os.unlink(filepath)