๋ฆฌ๋ ์ค ๋ช ๋ น์ด๋ฅผ ํ์ด์ฌ ์ฝ๋์์ os.system์ ์ด์ฉํ์ฌ ์ข ์ข ์คํํ๊ณค ํ๋ค.
ํ์ง๋ง os.system์ ์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ๋.. ๐ซ
ํด์ ์ธํฐ๋ท์ผ๋ก ์ฐพ์๋ณด์๋๋ Subprocess ๋ผ๋ ๊ธฐ๋ณธ ๋ชจ๋์ ์ด์ฉํ์ฌ ๋ฌธ์์ด ๊ฒฐ๊ณผ๋ฅผ ์ ์ฝ๊ฒ ๋ณ์ ๊ฐ์ผ๋ก ์ ์ฅ ํ ์ ์์๋ค.
๋ด์ฉ์ ๋ฐ์ท ํด์จ ํฌ์คํ ์์ communicate๋ ํ์ผ์ด ํฌ๊ฑฐ๋ unlimitedํ ๋ถ๋ถ์์๋ ์ฐ์ง ๋ง๋ผ๊ณ ํ๋ค๋ ๋๊ธ์ ๋ณด์๋ค.
์ ๊ทธ๋ฐ์ง๊น์ง๋ ์์ธํ ๋ณด์ง ์์์ผ๋ ๊ทธ๋ฐ ์ํฉ์ด๋ผ๋ฉด ์ข ๋ ์ฐพ์๋ณด๊ณ ์ ์ฉํ๋๋ก ํ์.
ํ์ด์ฌ๋ฟ๋ง ์๋๋ผ ๋ญ๋ ๋ฌธ์๋ฅผ ๋ณผ ๋๋ ์์ ์ ๋ฒ์ ๊ณผ ๋ฌธ์์์ ์ค๋ช ํ๋ ๋ฒ์ ์ด ๊ฐ์ ์ง๋ฅผ ํญ์ ๋ณด์์ผ ํ๋ค.
Let's do this
1. check_output(...)
import subprocess
data = subprocess.check_output(['ls', '-al'])
print data
2. popen(...)
- ์๋ ์์ ๋ ์ฐธ๊ณ ํ ํฌ์คํ ์์ ๋ฐ์ทํ์์ต๋๋ค.
import subprocess
def main():
cmd = ['curl', '-s', '-F', 'cc=test', 'http://test.com']
# ์คํ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ช
๋ น์ด๋ฅผ ์๋ผ์ list๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
# ์ ๋ช
๋ น์ด๋ terminal์์ curl -s -F cc=test http://test.com ์ด ๋๊ฒ ์ฃ ?
fd_popen = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout
# ๋ช
๋ น์ด ์คํ ํ ๋ฐํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
# ์ 4ํ์ ๋ฆฌ์คํธ ํํ๋ก ์ฐ์ง ์๊ณ ๋ฌธ์์ด ํํ๋ก ์ธ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณต์ ๋ฐ์ ์์ฑํฉ๋๋ค.
# ์๋์ ๊ฐ์ด Popen์ shell=True ์ต์
์ ์ถ๊ฐํด์ฃผ๋ฉด cmd๋ฅผ ๋ฌธ์์ด ํํ๋ก ์ ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค!
# cmd = 'curl -s -F cc=text http://test.com'
# fd_popen = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout
data = fd_popen.read().strip()
# ํ์ผ์์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ด data์ ์ ์ฅํฉ๋๋ค.
fd_popen.close()
# ํ์ผ์ ๋ซ์ต๋๋ค.
# ํ์ผ์ ์ด๊ณ ๋ ๋ค ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๊ผญ! ๋ซ์์ฃผ์๋ ๊ฑฐ ์์์ฃ !?
print data
data๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ์์ b''๊ฐ ๋ถ์ด ๋์จ๋ค.
์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก binary ํ์์ผ๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ํ์์ธ๋ฐ ๊ฒฐ๊ณผ(data)๋ฅผ ๋์ฝ๋ํด์ ํด๊ฒฐํ ์ ์๋ค.
data.decode('utf-8')
More
์ฌ์ฉ์ ํด๋ดค์ ๋, checkout_output ๋ฉ์๋๊ฐ ํจ์ฌ ํธํ๊ณ ์ข์๋ค.
์ต์ ์ ์ฌ์ฉํ๋ฉด ์ข ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ํ ์ ์์ผ๋ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์!
Thank for
'Lang > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Python * ์/ํ์, ๋์ผ ํด๋ ๋ด ๋ชจ๋ from, import ํ๋ ๋ฐฉ๋ฒ (0) | 2020.03.09 |
---|---|
๐ Python * ํ์ ๋น๊ต / ํ๋ณํ (0) | 2020.03.05 |
๐ Python * code๋ก Ubuntu file, directory ์ญ์ ํ๊ธฐ (0) | 2020.03.05 |
โ Solved * [Python] ํ๊ธ encoding์ด ๋์ง ์์ ๋ (0) | 2020.03.04 |
๐ Python * code๋ก File copy ํ๊ธฐ (0) | 2020.03.04 |