mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
New subprocess utility function: check_call. Closes #1071764.
This commit is contained in:
parent
ed2dbe3f33
commit
454f76711c
3 changed files with 72 additions and 2 deletions
|
@ -133,6 +133,15 @@ call(*popenargs, **kwargs):
|
|||
|
||||
retcode = call(["ls", "-l"])
|
||||
|
||||
check_call(*popenargs, **kwargs):
|
||||
Run command with arguments. Wait for command to complete. If the
|
||||
exit code was zero then return, otherwise raise
|
||||
CalledProcessError. The CalledProcessError object will have the
|
||||
return code in the errno attribute.
|
||||
|
||||
The arguments are the same as for the Popen constructor. Example:
|
||||
|
||||
check_call(["ls", "-l"])
|
||||
|
||||
Exceptions
|
||||
----------
|
||||
|
@ -148,6 +157,9 @@ should prepare for OSErrors.
|
|||
|
||||
A ValueError will be raised if Popen is called with invalid arguments.
|
||||
|
||||
check_call() will raise CalledProcessError, which is a subclass of
|
||||
OSError, if the called process returns a non-zero return code.
|
||||
|
||||
|
||||
Security
|
||||
--------
|
||||
|
@ -363,6 +375,13 @@ import os
|
|||
import types
|
||||
import traceback
|
||||
|
||||
# Exception classes used by this module.
|
||||
class CalledProcessError(OSError):
|
||||
"""This exception is raised when a process run by check_call() returns
|
||||
a non-zero exit status. The exit status will be stored in the
|
||||
errno attribute. This exception is a subclass of
|
||||
OSError."""
|
||||
|
||||
if mswindows:
|
||||
import threading
|
||||
import msvcrt
|
||||
|
@ -393,7 +412,7 @@ else:
|
|||
import fcntl
|
||||
import pickle
|
||||
|
||||
__all__ = ["Popen", "PIPE", "STDOUT", "call"]
|
||||
__all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call", "CalledProcessError"]
|
||||
|
||||
try:
|
||||
MAXFD = os.sysconf("SC_OPEN_MAX")
|
||||
|
@ -428,6 +447,25 @@ def call(*popenargs, **kwargs):
|
|||
return Popen(*popenargs, **kwargs).wait()
|
||||
|
||||
|
||||
def check_call(*popenargs, **kwargs):
|
||||
"""Run command with arguments. Wait for command to complete. If
|
||||
the exit code was zero then return, otherwise raise
|
||||
CalledProcessError. The CalledProcessError object will have the
|
||||
return code in the errno attribute.
|
||||
|
||||
The arguments are the same as for the Popen constructor. Example:
|
||||
|
||||
check_call(["ls", "-l"])
|
||||
"""
|
||||
retcode = call(*popenargs, **kwargs)
|
||||
cmd = kwargs.get("args")
|
||||
if cmd is None:
|
||||
cmd = popenargs[0]
|
||||
if retcode:
|
||||
raise CalledProcessError(retcode, "Command %s returned non-zero exit status" % cmd)
|
||||
return retcode
|
||||
|
||||
|
||||
def list2cmdline(seq):
|
||||
"""
|
||||
Translate a sequence of arguments into a command line
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue