[파이썬] subprocess `subprocess.args`: 인수 전달하기

subprocess

Python’s subprocess module is a powerful tool for executing external commands or programs from within a Python script. One of the key functionalities of this module is the ability to pass arguments to the external command.

In this blog post, we will explore how to pass arguments using the subprocess.args attribute.

The subprocess.args attribute

The subprocess.args attribute allows us to pass arguments to the external command when using subprocess. This attribute allows for flexibility in passing both positional and keyword arguments to the command.

Let’s take a look at an example to see how subprocess.args works:

import subprocess

command = ['python', 'script.py', 'arg1', 'arg2']
process = subprocess.Popen(command, stdout=subprocess.PIPE)
output, error = process.communicate()

In the above code snippet, we create a list called command that includes the name of the Python interpreter followed by the script name and the two arguments arg1 and arg2.

By passing the command list to subprocess.Popen, we are instructing the system to execute the external command (python script.py arg1 arg2) with the provided arguments. The stdout=subprocess.PIPE argument is used to capture the output of the command.

Finally, we can use the communicate() method to retrieve the output and error from the executed command.

Passing keyword arguments

In addition to positional arguments, subprocess.args also allows us to pass keyword arguments to the command. This can be achieved by using the = symbol between the argument name and its value.

Let’s consider the following example:

import subprocess

command = ['ls', '-l', directory='/path/to/dir', recursive=True]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
output, error = process.communicate()

In this code snippet, we are using the ls command to list the contents of a directory. We pass two keyword arguments, directory and recursive, to the command with their respective values. The resulting command executed will be something like ls -l --directory=/path/to/dir --recursive.

Conclusion

The subprocess.args attribute in Python’s subprocess module provides a convenient way to pass arguments to external commands. Its capability to handle both positional and keyword arguments allows for great flexibility when working with different commands.

Remember to refer to the documentation for the specific command you are executing to understand the available options and arguments.

Thanks for reading!