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 解決辦法

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。