biobootloader / wolverine

MIT License
5.22k stars 516 forks source link

Use subprocess.run with encoding="utf-8" #32

Open hughdbrown opened 1 year ago

hughdbrown commented 1 year ago

https://github.com/biobootloader/wolverine/blob/2f5a026ff96971a4c00491ad628fae6b7e1c503c/wolverine.py#L36-L40

if you pass encoding='utf-8' to subprocess.run, your strings are automatically decoded:

>>> s = subprocess.run("/bin/echo 'hello'".split(" "), stdout=subprocess.PIPE)
>>> s.stdout
b"'hello'\n"
>>> s = subprocess.run("/bin/echo 'hello'".split(" "), stdout=subprocess.PIPE, encoding="utf-8")
>>> s.stdout
"'hello'\n"

So:

    try:
        result = subprocess.check_output(subprocess_args, stderr=subprocess.STDOUT, encoding="utf-8")
    except subprocess.CalledProcessError as e:
        return e.output, e.returncode
    return result, 0