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 95d024d585)

Co-authored-by: Tim D. Smith <github@tim-smith.us>
This commit is contained in:
Miss Islington (bot) 2020-02-10 14:56:14 -08:00 committed by GitHub
parent a12effde34
commit 78982f94fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 2 deletions

View File

@ -354,14 +354,20 @@ functions.
arguments for additional differences from the default behavior. Unless arguments for additional differences from the default behavior. Unless
otherwise stated, it is recommended to pass *args* as a sequence. 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 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 path of the program to execute. However, this can only be done if not
passing arguments to the program. passing arguments to the program.
.. note:: .. note::
:meth:`shlex.split` can be useful when determining the correct It may not be obvious how to break a shell command into a sequence of arguments,
tokenization for *args*, especially in complex cases:: especially in complex cases. :meth:`shlex.split` can illustrate how to
determine the correct tokenization for *args*::
>>> import shlex, subprocess >>> import shlex, subprocess
>>> command_line = input() >>> command_line = input()