From e6690f6cd1b0c2bd5804bad30239a4070f79102c Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 10 Feb 2020 14:57:06 -0800 Subject: [PATCH] bpo-13826: Clarify Popen constructor example (GH-18438) Clarifies that the use of `shlex.split` is more instructive than normative, and provides a simpler example. https://bugs.python.org/issue13826 (cherry picked from commit 95d024d585bd3ed627437a2f0cbc783c8a014c8a) Co-authored-by: Tim D. Smith --- Doc/library/subprocess.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index ea12cd133a6f..cce7da1c9b16 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -355,14 +355,20 @@ functions. arguments for additional differences from the default behavior. Unless otherwise stated, it is recommended to pass *args* as a sequence. + An example of passing some arguments to an external program + as a sequence is:: + + Popen(["/usr/bin/git", "commit", "-m", "Fixes a bug."]) + On POSIX, if *args* is a string, the string is interpreted as the name or path of the program to execute. However, this can only be done if not passing arguments to the program. .. note:: - :meth:`shlex.split` can be useful when determining the correct - tokenization for *args*, especially in complex cases:: + It may not be obvious how to break a shell command into a sequence of arguments, + especially in complex cases. :meth:`shlex.split` can illustrate how to + determine the correct tokenization for *args*:: >>> import shlex, subprocess >>> command_line = input() -- 2.47.3