【Windowsコマンドプロンプト】Pythonスクリプトからコマンドを実行する方法

Python
挨拶
くろやぎ
くろやぎ

こんにちは!くろやぎ(kuroyagi_info)です。

Pythonスクリプトからコマンドを叩きたい!そんな悩みを解決してくれる、osモジュールのsystemメソッドを紹介します。

  • 対象読者
    • Pythonからコマンドを実行したい方
  • 内容
    • Pythonのosモジュールのsystemメソッドの使い方の一例
    • Pythonスクリプトからコマンドを実行
    • os.system()における適切な例外処理
  • 実行環境
    • Windows 10
    • Python 3.6

os.system()を使ってPythonでコマンドを実行

os.system()を使えば、Pythonスクリプトからコマンドを実行できます。Windowsのコマンドプロンプトで実行するコマンドを、Pythonスクリプトで実行できるイメージです。構文は次の通りです。

os.system('実行したいコマンド')

Pythonでコマンドを実行してみる

ここでは、電源に関する設定をしたり情報を確認することができる「powercfg」というコマンドをPythonから実行してみます。

import os

command = "powercfg /batteryreport"
os.system(command)
# バッテリ寿命レポートがファイル パス C:\battery-report.html に保存されました。

出力にファイル(battery-report.html)の保存先が記載されているので、そのディレクトリに移動して、htmlファイルを開きます。

こんな感じのウィンドウが表示されればOK!

バッテリーレポートを見ることで、お使いのPCのバッテリーの消耗具合を確認できます。レポートの見方については次の記事で解説しています。
Windows 10でバッテリーレポートを表示する方法

os.system()における適切な例外処理

一見すると、次の2つのスクリプトは同じ処理をするように見えます。

import os

for i in range(10):
    command = "powercfg /batteryreport"
    os.system(command)
import subprocess

for i in range(10):
    command = "powercfg /batteryreport"
    subprocess.call(command, shell=True)

前者のほうが引数の数が少なくすっきりして見えて使いやすそうですよね。
でも、このスクリプトを止めようとしてCtrl Cを押すと、前者はそのまま次のループが実行されてしまうのに対して、後者はちゃんと例外を出して処理を終了してくれます。
エラー処理までしっかり対策したい場合は、後者の記述をするように心掛けましょう。

おわりに

pyファイルでも、batファイル的な使い方ができるようになるので便利ですね。Python&Windowsユーザーにとっては、非常に有効なテクニックだと思います。ぜひ、お試しあれ~

397
タイトルとURLをコピーしました