[파이썬] subprocess `subprocess.Popen` 객체의 `args` 속성

The subprocess module in Python allows you to create new processes and interact with their input/output streams. One of the useful classes in this module is subprocess.Popen, which represents a running process.

The args attribute of a subprocess.Popen object holds the command and arguments used to start the process. It’s a tuple that contains the full command line to be executed.

Accessing the args Attribute

To access the args attribute of a subprocess.Popen object, you can simply access it like any other attribute using the dot notation. Here’s an example:

import subprocess

# Start a process
process = subprocess.Popen(['ls', '-l', '/'])

# Access the args attribute
print(process.args)

In the above example, we create a new subprocess.Popen object by running the ls -l / command. Then, we access the args attribute and print it. The output will be the same as the command line arguments passed to the Popen class.

Modifying the args Attribute

The args attribute is read-only, so you cannot directly modify it. However, you can create a new subprocess.Popen object with different command line arguments if needed.

import subprocess

# Start a process with initial args
initial_args = ['ls', '-l']
process = subprocess.Popen(initial_args)

# Modify the args attribute by creating a new process
new_args = ['ls', '-a']
new_process = subprocess.Popen(new_args)

# Access the args attributes of both processes
print(process.args)      # ['ls', '-l']
print(new_process.args)  # ['ls', '-a']

In the above example, we first start a process with initial arguments ['ls', '-l']. Then, we create a new process with different arguments ['ls', '-a']. By comparing the args attributes of both processes, we can see the changes.

Conclusion

The args attribute of a subprocess.Popen object holds the command line arguments used to start a process. It provides a convenient way to access and reference the command that was executed. However, it is read-only, and any modification requires creating a new subprocess.Popen object with different arguments.

Remember to import the subprocess module at the beginning of your code before using the Popen class and its args attribute.