[파이썬] subprocess `subprocess.check_call()`: 오류 검사

In Python, the subprocess module is used to create new processes, execute system commands, and communicate with other programs. One of the functions provided by this module is subprocess.check_call(), which allows you to execute a command and check its return code for errors.

Checking Return Codes

When executing a command using subprocess.check_call(), it is important to check the return code to ensure that the command executed successfully. A return code of 0 typically indicates success, while a non-zero return code indicates an error.

import subprocess

try:
    # Execute a command and check return code
    subprocess.check_call(["ls", "-l"])
    print("Command executed successfully")
except subprocess.CalledProcessError as e:
    print(f"Command execution failed with return code {e.returncode}")

Handling Errors

If the command executed by subprocess.check_call() returns a non-zero return code, a CalledProcessError exception is raised. You can catch this exception and handle the error accordingly.

import subprocess

try:
    subprocess.check_call(["invalid_command"])
except subprocess.CalledProcessError as e:
    print(f"Command execution failed with return code {e.returncode}")
    print(e.output)  # Output from the command, if any

In the above example, if the command invalid_command is not found, a CalledProcessError exception will be raised, and the error message along with the return code will be printed.

Conclusion

The subprocess.check_call() function in Python’s subprocess module is a convenient way to execute system commands and check their return codes for errors. By properly handling the potential errors, you can ensure that your code is robust and handles unexpected scenarios gracefully.