HOWTO · Python

Python のフォルダ内の各ファイルに対してコマンドを実行する

このチュートリアルでは、Python のフォルダー内のすべてのファイルに対してコマンドを実行する方法を示します

このページの内容

ファイルから特定の変数を抽出したり、ファイルに書き込まれたテキストを抽出したりするなど、Python を使用して外部ファイルに対して実行できる興味深い操作はたくさんあります。その一つが、Python を使って特定のフォルダに存在する Python ファイルにコマンドを実行する操作です。

このチュートリアルでは、Python を使用してフォルダー内に存在するすべてのファイルに対してコマンドを実行する方法を示します。

このチュートリアルでは、いくつかの Python ステートメントを含む 2つの Python ファイルが実行され、辞書 testFolder に存在する .py 拡張子で保存されると想定します。

これらの 2つの Python ファイルは次のとおりです。

  • sample1.py
print("Hello World")
  • sample2.py
print(1 + 1)

ここで、これら 2つのファイルが testFolder というフォルダーに保存されているとします。これらのファイルを Python で出力するいくつかの方法を見てみましょう。

コマンドプロンプトを使用して、Python のフォルダーに存在するすべてのファイルに対してコマンドを実行する

コンピューターのコマンドラインを使用してフォルダー内に存在するすべてのファイルを実行するには、ファイルのパスを指定する必要があります。コマンドプロンプトに書き込まれるコマンドは次のとおりです。

python ../testFolder/sample1.py & python ../testFolder/sample2.py

出力:

Hello World
2

os モジュールを使用して、Python のフォルダー内のすべてのファイルに対してコマンドを実行する

Python の os モジュールは、Python の標準ユーティリティモジュールの下にあります。このモジュールは、さまざまな機能と方法を提供することにより、コンピューターのオペレーティングシステムとの対話を支援します。このモジュールは主に、ユーザーがコンピューターのファイルシステムを操作したいときに機能します。

このメソッドでは、os モジュールからいくつかのメソッドが使用されます。メソッドは、os.listdir、os.path.join、および os.path.isfile です。

os モジュールの os.listdir メソッドは、ディレクトリに存在するすべてのファイルの完全なリストを取得するのに役立ちます。このメソッドの引数は、ディレクトリのパスです。引数にディレクトリが指定されていない場合、現在のディレクトリに存在するすべてのファイルのリストがデフォルトで返されます。

os モジュールの os.path.join メソッドは、特定のパスの 1つまたは複数のコンポーネントを連結するために使用されます。これは、ディレクトリ区切り文字/とも呼ばれる区切り文字によって行われます。

os モジュールの os.path.isfile メソッドは、ファイルが指定されたパスに存在するかどうかを確認するのに役立ちます。このメソッドの引数は常にファイルのパスです。

import os

directory_name = "random"

for file_name in os.listdir(directory_name):
    i = os.path.join(directory_name, file_name)
    if os.path.isfile(i):
        print(i)

出力:

Hello World
2

pathlib モジュールを使用して、Python のフォルダー内の各ファイルに対してコマンドを実行する

Python の pathlib モジュールは、標準のユーティリティモジュールの下にあります。このモジュールは、クラスの形式でファイルパスを提供するのに役立ち、オペレーティングシステムを処理するための適切なセマンティクスを提供します。

このメソッドでは、pathlib モジュールの path.glob() 関数が使用されます。これは基本的に、指定されたディレクトリ内のすべてのファイルにアクセスするのに役立ちます。

from pathlib import Path

directory_name = "random"

open_files = Path(directory_name).glob("*")
for file in open_files:
    print(file)

出力:

Hello World
2