Python 子进程 subprocess.Popen 类使用技项 常见问题


subprocess.Popen 是 Python 开启 管理子进程的常用类。

其首 args 自变量可为序列或字符串 (注意:有些时候,只能是字符串)。

若通过 subprocess.Popen 开启的子进程环境未继承 (或缺少) 某些路径, 请修改 sys.path 变量值 (或相关环境变量)。

Python2.7


Python2.7 对非 ASCII 字符集 (如 GB18030) 的支持并不完整。

因此,使用 subprocess.Popen 时,不能包含非 ASCII 字符。 且 Python2.7 已于 2020 年 01 月停止维护,此问题不会得到修补。

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

Python3.x


Python3.x 对非 ASCII 字符集 (如 GB18030) 的支持完美。

因此,使用 subprocess.Popen 时,可包含非 ASCII 字符。

subprocess.Popen(args , bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None)

另请参阅:

CPython2.7 subprocess.Popen()不忍直视的Unicode中文路径Bug 解决办法

版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。