From 6006e0412d94045bc44344904b6d4f61d9ed9fc8 Mon Sep 17 00:00:00 2001 From: madsmpedersen <m@madsp.dk> Date: Wed, 25 Nov 2015 15:26:15 +0100 Subject: [PATCH] two step process execution (1:create process, 2: execute) now posible --- wetb/functions/process_exec.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/wetb/functions/process_exec.py b/wetb/functions/process_exec.py index 509459e..caeb497 100644 --- a/wetb/functions/process_exec.py +++ b/wetb/functions/process_exec.py @@ -5,6 +5,7 @@ Created on 10/03/2014 ''' import os +import psutil DEBUG = False def pexec(args, cwd=None): @@ -28,3 +29,26 @@ def pexec(args, cwd=None): errorcode = proc.returncode return errorcode, stdout.decode(), stderr.decode(), cmd + + +def process(args, cwd=None): + import subprocess + if not isinstance(args, (list, tuple)): + args = [args] + args = [str(arg) for arg in args] + for i in range(len(args)): + if os.path.exists(args[i]): + args[i] = str(args[i]).replace('/', os.path.sep).replace('\\', os.path.sep).replace('"', '') + + cmd = "%s" % '{} /c "{}"'.format (os.environ.get("COMSPEC", "cmd.exe"), subprocess.list2cmdline(args)) + if cwd is not None and os.path.isfile(cwd): + cwd = os.path.dirname(cwd) + return subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False, cwd=cwd) + +def exec_process(process): + stdout, stderr = process.communicate() + errorcode = process.returncode + + return errorcode, stdout.decode(), stderr.decode() + + -- GitLab