๐Ÿžํ”„๋กœ๊ทธ๋ž˜๋ฐ

[์ •๋ณด] ํŒŒ์ด์ฌ subprocess ์„ค๋ช… ๋ฐ ์˜ˆ์ œ

TwoIceFish 2023. 2. 15. 12:22

Python์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” subprocess ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. subprocess ๋ชจ๋“ˆ์€ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ์ถœ๋ ฅ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Python์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋ช…๋ น์„ ์ œ์–ดํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

import subprocess

# ์‹คํ–‰ํ•  ๋ช…๋ น์–ด
cmd = 'ls -al'

# shell=True๋กœ ์ง€์ •ํ•˜์—ฌ ์…ธ ๋ช…๋ น์–ด ์‹คํ–‰
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE)

# ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
print(result.stdout.decode())

 

์œ„ ์ฝ”๋“œ์—์„œ๋Š” subprocess.run() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ls -al ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ result์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. stdout=subprocess.PIPE๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ช…๋ น์–ด์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. result.stdout์—๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”์ดํŠธ(byte) ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, decode() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ๋Š” ์…ธ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ์—ˆ์ง€๋งŒ, subprocess ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด Python ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ง์ ‘ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ shell=True๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

import subprocess

# ์‹คํ–‰ํ•  ๋ช…๋ น์–ด
cmd = ['echo', 'Hello, world!']

# ๋ช…๋ น์–ด ์‹คํ–‰
result = subprocess.run(cmd, stdout=subprocess.PIPE)

# ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
print(result.stdout.decode())

์œ„ ์ฝ”๋“œ์—์„œ๋Š” subprocess.run() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ echo ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ result์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. stdout=subprocess.PIPE๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ช…๋ น์–ด์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. result.stdout์—๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”์ดํŠธ(byte) ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, decode() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ subprocess ๋ชจ๋“ˆ์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ํ•„์š”์— ๋”ฐ๋ผ์„œ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.