From dd42cb71f2cb02f3a32f016137b12a146bc0d0e2 Mon Sep 17 00:00:00 2001 From: Anders Lorentsen Date: Tue, 30 Jan 2018 08:27:28 +0100 Subject: bpo-31961: subprocess now accepts path-like args (GH-4329) Allow os.PathLike args in subprocess APIs. --- Lib/subprocess.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Lib/subprocess.py') diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 93635ee61f..2723bc9e42 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1097,7 +1097,12 @@ class Popen(object): assert not pass_fds, "pass_fds not supported on Windows." if not isinstance(args, str): - args = list2cmdline(args) + try: + args = os.fsdecode(args) # os.PathLike -> str + except TypeError: # not an os.PathLike, must be a sequence. + args = list(args) + args[0] = os.fsdecode(args[0]) # os.PathLike -> str + args = list2cmdline(args) # Process startup details if startupinfo is None: @@ -1369,7 +1374,10 @@ class Popen(object): if isinstance(args, (str, bytes)): args = [args] else: - args = list(args) + try: + args = list(args) + except TypeError: # os.PathLike instead of a sequence? + args = [os.fsencode(args)] # os.PathLike -> [str] if shell: # On Android the default shell is at '/system/bin/sh'. -- cgit v1.2.1