【Python】コマンド実行の基本を徹底解説:初心者にもわかりやすく具体例つきで紹介
はじめに
Pythonはさまざまな用途で活用されるプログラミング言語で、データ処理からWebアプリケーション開発まで幅広く使われています。
特に、コマンドラインからPythonスクリプトを実行する方法を知っていると、バッチ処理や簡単な自動化タスクを気軽にこなせるようになります。
一方で、Pythonのコマンド実行と聞くと難しそうに思うかもしれませんね。
しかし実際は、いくつかの基本ルールとコマンドを理解しておけば、初心者の方でもスムーズに使い始めることができます。
ここでは、Pythonに触れたばかりの皆さんが最初につまずきがちなポイントを押さえつつ、コマンド実行をどのように行えばよいかを丁寧に解説します。
実務での活用シーンも含めて解説しますので、ぜひ参考にしてみてください。
この記事を読むとわかること
- Pythonでコマンドを実行する基本的な方法
- Pythonスクリプトとインタラクティブモードの違い
- コマンドライン引数の扱い方
- Pythonから外部コマンドを呼び出す方法
- WindowsやmacOS、Linuxでの実行時の注意点
- 自動化やバッチ処理での活用シーン
これらの内容を理解することで、コマンドラインを使ったPython活用がグッと身近に感じられるようになるでしょう。
Pythonコマンド実行の概要
Pythonをコマンドラインから使う方法は、大きく分けて2パターンあります。
1つ目は、インタラクティブモードと呼ばれる対話形式でPythonを試す方法です。
ターミナルやコマンドプロンプトに python
と入力すると、対話的なコンソールが起動し、その場でPythonのコードを1行ずつ実行できます。
もう1つは、スクリプトファイルをPythonで実行する方法です。
拡張子が .py
のファイルを作って、そのファイルを python ファイル名.py
のような形で実行します。
実務では主にスクリプトファイルを使うケースが多いです。
理由は、使い回しがしやすい、チーム開発で共有しやすいといった点が挙げられます。
ただし、ちょっとしたコードを試したり、小規模な動作確認をする場合はインタラクティブモードが便利です。
このようにPythonのコマンド実行には2つの使い方があり、状況に応じて使い分けると効率が上がります。
Pythonスクリプトとインタラクティブモード
Pythonスクリプトとは何か
Pythonスクリプトは、.py
という拡張子を持つファイルにコードを書き、python
コマンドを使って実行する仕組みです。
例えば、以下のようなファイル hello.py
を作ったとします。
print("こんにちは、Python!")
このファイルをターミナルやコマンドプロンプト上で次のように入力すると実行できます。
python hello.py
このようにスクリプトをまとめて管理できるため、複雑な処理を行う際や、再利用したいコードを保管しておく場合に非常に便利です。
また、バージョン管理ツール(Gitなど)を使ってチーム全体で編集・共有する場合にも適しています。
インタラクティブモードの利点
インタラクティブモードは python
だけを入力して起動し、対話形式でPythonコードを実行できます。
例えば、ターミナルで python
を打ち込むと、>>>
というプロンプトが表示されます。
そこで以下のように入力してみましょう。
>>> 2 + 3 5
即座に結果が表示されるので、ちょっとした動作確認や実験に向いています。
ただし、コードをファイルとして保存しないため、後から見返したい処理や大きなプログラムには向きません。
こうした特徴を踏まえると、短いテストや学習中のコード試行にはインタラクティブモード、本格的な開発や運用スクリプトにはスクリプトファイル、というように使い分けるとよいでしょう。
実務での活用シーン (1): データ処理スクリプト
Pythonはデータ解析や機械学習にも多く使われています。
例えば、定期的に取得するデータを加工してCSVとして保存するような処理を一度作っておけば、毎回同じコマンドを実行するだけで結果を出力することができます。
# data_clean.py の例 import csv def clean_data(input_file, output_file): cleaned_rows = [] with open(input_file, "r", encoding="utf-8") as f: reader = csv.reader(f) for row in reader: # ここでデータ加工やチェックを行う row = [element.strip() for element in row] cleaned_rows.append(row) with open(output_file, "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerows(cleaned_rows) if __name__ == "__main__": clean_data("input_data.csv", "cleaned_data.csv")
このファイルを python data_clean.py
のように実行すれば、データの加工やクリーニングが自動で行われます。
業務で繰り返し処理するようなタスクがある場合、こういった形でスクリプト化すると便利です。
日次・週次のレポート生成にも応用しやすいため、Pythonを導入する企業や開発現場は多くなっています。
実務での活用シーン (2): ファイル操作や定形作業の自動化
Pythonはファイル操作が得意なので、毎回手作業で行っていた定形的な作業を自動化するのにうってつけです。
例えば、大量のファイルを一括リネームしたり、指定したディレクトリのバックアップを作るときにPythonスクリプトを利用することがあります。
# rename_files.py の例 import os def bulk_rename(folder_path, prefix): files = os.listdir(folder_path) for index, file in enumerate(files): old_path = os.path.join(folder_path, file) if os.path.isfile(old_path): new_filename = f"{prefix}_{index}.txt" new_path = os.path.join(folder_path, new_filename) os.rename(old_path, new_path) if __name__ == "__main__": bulk_rename("example_folder", "renamed")
このコードでは、example_folder
内のファイルを順番に取得し、prefix
の文字列を先頭につけて連番でリネームします。
こうした自動化スクリプトは、単純作業のミスを減らし、作業効率を大きく改善する手助けとなります。
コマンドラインから実行できることで、他のタスクの合間などにも簡単に動かせる点が魅力です。
Pythonをコマンドラインで実行する方法
Pythonスクリプトを実行するための基礎コマンドを理解すると、さまざまなバリエーションのコマンド実行が可能になります。
ここでは代表的な方法をいくつか紹介します。
基本の流れは以下のとおりです。
.py
ファイルを作成する- コマンドラインを開く(Windowsのコマンドプロンプト、macOSやLinuxのターミナルなど)
python スクリプト名.py
と入力して実行する
この手順を覚えれば、とりあえずPythonコードを動かすことは可能です。
1. python コマンドの基本
最も一般的なのは、python スクリプト名.py
と入力するやり方です。
例えば hello.py
というファイルを用意している場合、
python hello.py
とするだけで、ファイル内のPythonコードを順番に実行できます。
もしWindows環境で複数のPythonバージョンを共存させているなら、python3
や py
コマンドなどで実行する場合もあります。
システムやインストール環境によって、Pythonを呼び出すコマンドがやや異なる点を頭に入れておきましょう。
また、ファイルパスを相対パスではなく絶対パスで指定した方がエラーを減らせる場合もあります。
状況に応じてパスを使い分けることが大事です。
2. python -m でモジュールを実行
Pythonには、-m
オプションを使ってモジュールを直接実行する方法もあります。
例えば、標準ライブラリの一部である http.server
モジュールを簡易サーバーとして起動したいとき、
python -m http.server 8000
のように実行できます。
これはスクリプトを介さずにモジュールの機能を直接呼び出せるので、デバッグや小規模なテストに役立ちます。
また、開発中のパッケージをモジュールとして動かす場合にも便利です。
スクリプトファイルのパス指定をする代わりに、モジュール名で呼び出せる点が特徴です。
3. コマンドライン引数を受け取る
スクリプトファイルに対して、追加の引数を渡すことで柔軟な処理が可能になります。
例えば、上記の data_clean.py
を改造して、外部から入出力ファイル名を指定できるようにしてみましょう。
# data_clean_arg.py import sys import csv def clean_data(input_file, output_file): cleaned_rows = [] with open(input_file, "r", encoding="utf-8") as f: reader = csv.reader(f) for row in reader: row = [element.strip() for element in row] cleaned_rows.append(row) with open(output_file, "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerows(cleaned_rows) if __name__ == "__main__": # sys.argv[0] はスクリプト名 # sys.argv[1], sys.argv[2] が引数となる input_path = sys.argv[1] output_path = sys.argv[2] clean_data(input_path, output_path)
このファイルを以下のように実行すると、
python data_clean_arg.py input_data.csv cleaned_data.csv
それぞれを引数として受け取り、指定されたファイルに対して処理を行う仕組みになります。
実務では、コマンドライン引数を受け取れるようにしておくと、同じスクリプトで異なるデータセットを処理できるため柔軟です。
一方で、引数の数が増えすぎると混乱するので、整理する工夫も必要になります。
Pythonコードから外部コマンドを実行するには
Python自体をコマンドラインから呼び出すだけでなく、Pythonのコードから別のプログラムを動かすこともよくあります。
例えば、Pythonで生成したデータを外部コマンドに引き渡して処理し、その結果を再びPythonで扱うようなフローです。
このような連携を実現するには、subprocess
モジュールを使うのが基本です。
シェルコマンドをPythonから実行できるため、幅広いツールとの連携が可能になります。
subprocessモジュールの基本
subprocess.run()
を使うと、Pythonコードの中で外部コマンドを実行できます。
例えば、コンソールに echo "Hello from shell"
を実行する例を見てみましょう。
import subprocess def run_echo(): result = subprocess.run(["echo", "Hello from shell"], capture_output=True, text=True) print("標準出力:", result.stdout) if __name__ == "__main__": run_echo()
ここで ["echo", "Hello from shell"]
は、実行したいコマンド名と引数をリスト形式で渡しています。
capture_output=True
と text=True
を指定すると、標準出力やエラー出力をPythonの文字列として受け取ることができます。
このようにPythonの処理の一部として外部コマンドを呼び出すことで、たとえば画像変換ツールや圧縮・解凍コマンドを自動実行するなど、多彩な自動化が可能になります。
os.system() との違い
Pythonには古くからある os.system()
という関数も存在しますが、現在は subprocess
モジュールを推奨する流れが一般的です。
os.system()
は引数に文字列を1つ取り、その文字列をシェル上でそのまま実行します。
しかし、返り値や出力を扱いにくい、あるいはセキュリティ上のリスクを引き起こしやすいという理由から、必要に応じてリファレンスは確認しつつも subprocess
モジュールが使われることが増えました。
もし実務で外部コマンドを多用するのであれば、標準出力やエラー出力の扱いがきちんと行える subprocess
を使う方が便利でしょう。
コードの可読性や保守性も高まるため、意図しない挙動を防ぎやすくなります。
実務での活用シーン (3): バッチ処理でのコマンド実行
企業のシステムでは夜間や早朝に行うバッチ処理がよくあります。
Pythonスクリプト内でデータベースにアクセスしてデータを抽出し、それを外部コマンドで圧縮してから別サーバーに転送する、というような一連の作業を自動化する例を考えてみましょう。
import subprocess import time def batch_process(): # 1. データベースから必要なデータを取得(仮定) # 2. 取得データを一時ファイルに保存(仮定) # 3. ファイルを圧縮 subprocess.run(["zip", "archive.zip", "extracted_data.csv"]) # 4. 圧縮したファイルをSCPで転送(仮定) subprocess.run(["scp", "archive.zip", "user@remotehost:/path/to/transfer"]) # 5. ログを出力するなど timestamp = time.strftime("%Y-%m-%d %H:%M:%S") print(f"{timestamp} バッチ処理完了") if __name__ == "__main__": batch_process()
このように外部コマンドを組み合わせることで、ファイル操作、転送、ログ取得などを一括で実行できます。
一定の時刻にこのPythonファイルをコマンドライン経由で呼び出すように設定すれば、作業を半自動または全自動化できるため、人的ミスが減らせます。
Windows / macOS / Linux での実行の違い
Pythonスクリプトの実行方法は基本的にどのOSでも同じですが、細かい点で違いがあります。
例えば、Windowsでは標準で python
コマンドが使えない場合があり、そのときは py
や python3
などを使う必要があるかもしれません。
一方でmacOSやLinuxの場合、最初からPythonがインストールされていることも多いのですが、バージョンが古いケースも考えられます。
その場合は適切なインストール手順を踏むか、パッケージ管理ツール(Homebrew、aptなど)を使って最新のPythonを入れる必要があります。
また、シェルコマンドの書き方やファイルパスの区切り文字もOSごとに異なります。
Windowsは \
(バックスラッシュ)、LinuxやmacOSは /
(スラッシュ)なので、Pythonスクリプト内でパスを取り扱う場合は os.path.join()
を使ってOSの違いを吸収するのがよくあるやり方です。
このようにOSによる差異は多少ありますが、Pythonコマンドを使う基本の手順は同じですので、慣れてしまえばそこまで難しくありません。
Pythonコマンド実行時に気をつけたいポイント
Pythonをコマンドラインから実行する際、いくつか覚えておきたい注意点があります。
特に初心者の皆さんには「パスの指定」「権限の問題」「文字コードの扱い」「実行環境の切り替え」の4点に注目してほしいです。
まず「パスの指定」です。
相対パスを使うと、実行時のカレントディレクトリによって処理対象ファイルが見つからない場合があります。
可能であれば絶対パスを指定する、または実行前にカレントディレクトリを適切に設定するなどの工夫が必要です。
次に「権限の問題」があります。
ファイル操作やネットワーク転送などを伴う場合、管理者権限や読み書き権限がないとエラーが起こることがあります。
コマンドを実行するユーザーの権限を確認し、必要に応じて権限付与や設定の変更を行いましょう。
また、WindowsとmacOS/Linuxでは管理者権限の設定方法が異なることがあるため注意が必要です。
続いて「文字コードの扱い」です。
日本語ファイル名や日本語のデータを扱う場合、システムの文字コードが影響して思わぬエラーが出ることがあります。
Pythonの読み書きでエンコードを指定する、あるいは環境設定をUTF-8に統一するなど、早めに文字コードを意識しておくと混乱が減らせます。
最後に「実行環境の切り替え」です。
プロジェクトごとに異なるバージョンのPythonやパッケージを使いたい場合、仮想環境(venvなど)を活用すると便利です。
仮想環境をセットアップすることで、必要なライブラリのバージョンをプロジェクト単位で管理できます。
とりあえず小さなスクリプトを動かすだけなら不要かもしれませんが、大規模な開発や複数プロジェクトを同時に扱うような現場では重宝する方法です。
上記のポイントを意識するだけで、Pythonのコマンド実行が安定しやすくなります。 パスや権限の問題で躓くケースが多いので、事前にファイルの場所やユーザー権限を確認しておきましょう。
Python実行時のエラー例と対処法
Pythonコマンドを使ううえで、初心者の方が遭遇しがちなエラーをいくつか挙げてみます。
例えば、No such file or directory
というメッセージが表示される場合です。
これは、指定したファイルパスが存在しない可能性が高いです。
絶対パスと相対パスの区別や、ファイル名のスペルミスなどをチェックすると解決しやすいでしょう。
また、Permission denied
というエラーが出る場合は、ファイル操作やネットワークアクセスなどで権限不足の可能性があります。
Windowsなら管理者としてコマンドプロンプトを実行する、LinuxやmacOSなら sudo
を使う、あるいはユーザー権限を変更すると解決できることがあります。
一方、コードの文法ミスが原因でエラーが出る場合は、ターミナルに表示されるエラーメッセージをよく読むことが大事です。
SyntaxErrorやNameErrorなど、エラーの種類と行番号を教えてくれるので、落ち着いて該当行を確認してみましょう。
エラーメッセージを無視し続けると、余計にトラブルが大きくなることがあります。 定期的にコードを少しずつ実行しながら確認するクセをつけると、原因を早く突き止めやすいです。
Pythonコマンドを使いこなすための学習ステップ
Pythonのコマンド実行に慣れてきたら、もう一歩進んだテクニックとして次のようなポイントを学ぶと役立ちます。
argparse モジュールを使った高度なコマンドライン引数解析
独自のオプションやヘルプメッセージを用意したい時に便利です。
logging モジュールによるログ管理
大規模なスクリプトやバッチ処理では、実行状況をログに残して後から確認できると安心です。
仮想環境の活用 (venvなど)
プロジェクトごとに依存パッケージを分けたい時は必須といえる機能です。
cronやタスクスケジューラとの連携
決まった時間に自動でPythonスクリプトを起動する設定をすることで、完全自動化が可能になります。
これらは少し発展的な話ですが、いずれもPythonを実務で使う上で自然と必要になるケースが多いです。
焦らずに順を追って覚えていくことで、自然に自動化や大規模管理のスキルが身につきます。
Pythonとその他の言語やツールの違い
Python以外にも、シェルスクリプト(BashやBatchファイルなど)やPowerShellで似たようなコマンド処理を行えます。
しかし、Pythonの強みはコードの可読性や豊富な標準ライブラリ、そして多彩な外部ライブラリです。
シェルスクリプトは軽量ですが、複雑な文字列処理やデータ解析にはやや不向きです。
一方、PowerShellはWindows環境に特化していますが、クロスプラットフォームでの利用はPythonほど一般的ではありません。
Pythonであれば、一度スクリプトを書いておけばWindows、macOS、Linuxといった複数の環境でほぼ同じように動く点が大きなメリットです。
また、定形的なコマンド処理に限らず、データベースやネットワークとも統合しやすいため、さまざまな用途に応用できます。
まとめ
ここまで、Pythonコマンド実行の基本から具体的な活用方法までを見てきました。
インタラクティブモードは手軽な実験に向いており、スクリプトファイルは再利用や共有がしやすいのが特徴です。
さらに、コマンドライン引数を使うことでスクリプトに柔軟性を持たせたり、subprocess
で外部コマンドを呼び出したりするなど、幅広い応用が可能になります。
OSによってはPythonコマンドの呼び出し方やパスの扱いに注意が必要ですが、基本的な考え方は共通です。
エラーに遭遇したら、エラーメッセージをよく確認し、ファイルのパスや文字コード、権限設定などをチェックしてみてください。
皆さんもぜひ、ここで紹介した知識を参考にしながらPythonをコマンドラインで実行してみましょう。
少しずつ慣れていけば、定形作業の自動化や大規模なバッチ処理など、いろいろなシーンでPythonを活用できるようになります。