#!/usr/bin/env python3 import locale import os import subprocess if __name__ == "__main__": print("*" * 100) print(locale.getpreferredencoding()) print("*" * 100) result = subprocess.run( ['env'], capture_output=True, ) result.check_returncode() print('return code:', result.returncode) print(result.stdout) print("*" * 100) result = subprocess.run( ['env'], capture_output=True, text=True, encoding='utf-8', ) result.check_returncode() print('return code:', result.returncode) print(f"{result.stdout[:100]}******") print("*" * 100) subprocess.run( ['env'], env={"NAME": "hatter"}, ) print("*" * 100) my_env = os.environ.copy() my_env["NAME"] = "hatter" subprocess.run( ['sleep', '5'], env=my_env, check=True, # 非 0 返回时抛出异常 ) print("*" * 100) subprocess.Popen( ['sleep', '50'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, preexec_fn=os.setpgrp # 让子进程独立,即使当前脚本挂了它也继续运行 ) print("*" * 100)