PythonでShell Command、スクリプトの実行

PythonでLinuxのシェルコマンドまたはスクリプトを実行する方法を紹介します。

Shell Command実行(1): os.system

os.system()に渡されたコマンドを実行します。結果は、コンソールに出力されます。

import os

os.system('ls -l')

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/run_shell.py
total 28
-rw-rw-r-- 1 js js  255  7월  4 16:01 comma.py
-rw-rw-r-- 1 js js  124  7월  3 16:14 file.log

シェルコマンド実行(2): os.popen

os.popen()に渡されたコマンドを実行します。結果はコンソールに出力されませんが、streamから読み取ることができます。

import os

stream = os.popen('ls -l')
output = stream.read()
print(output)

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/run_shell.py
total 28
-rw-rw-r-- 1 js js  255  7월  4 16:01 comma.py
-rw-rw-r-- 1 js js  124  7월  3 16:14 file.log
...

シェルコマンドの実行(3): subprocess

subprocess的に次のようにシェルコマンドを実行することができます。結果は、コンソールに出力されます。

import subprocess

subprocess.run(["ls", "-l"])

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/run_shell.py
total 28
-rw-rw-r-- 1 js js  255  7월  4 16:01 comma.py
-rw-rw-r-- 1 js js  124  7월  3 16:14 file.log
...

実行結果を返す

次のコードは、結果をコンソールに出力せずに、オブジェクトに返されます。 result.stdoutこの結果の文字列です。

import subprocess

result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, text=True)
print(result.stdout)

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/run_shell.py
total 28
-rw-rw-r-- 1 js js  255  7월  4 16:01 comma.py
-rw-rw-r-- 1 js js  124  7월  3 16:14 file.log
...

コンソールに結果を出力しないように設定

stdoutを subprocess.DEVNULLに設定すると、Outputは出力されません。

import subprocess

subprocess.run(["ls", "-l"], stdout=subprocess.DEVNULL)

Shell Scriptの実行

次のように引数としてシェルスクリプトファイルのパスとargumentsが渡されると、スクリプトが実行されます。

import subprocess

subprocess.run(["/tmp/test.sh", "arguments"], shell=True)

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/run_shell.py
total 28
-rw-rw-r-- 1 js js  255  7월  4 16:01 comma.py
-rw-rw-r-- 1 js js  124  7월  3 16:14 file.log
...
# /tmp/test.sh

echo "Hello, Python"

Related Posts

codechachaCopyright ©2019 codechacha