私たちは人生の中で、ディレクトリ (フォルダー) 内にどのようなファイルがいくつ存在するのかを知りたいという場面に何度も遭遇する可能性があります。あるいは、ファイルを探す必要があり、その名前はわかっているものの、それがどのフォルダーに存在するのかがわからない場合があります。この場合、残された唯一のオプションは、宛先ディレクトリでファイルを探すことです。
さて、私たちの多くにとって、それはとても簡単に思えるでしょう。ディレクトリに移動してそこを確認するだけです。これは可能なオプションですが、このオプションは、そのディレクトリに存在するファイルの数が少ない場合にのみ機能します。そうして初めて、そのディレクトリに手動でアクセスして、そこに存在するファイルを探すことができます。しかし、宛先ディレクトリに多数のファイル、たとえば数千のファイルが存在する場合はどうなるでしょうか。その場合、このオプションは機能しません。これは、数千のファイルが存在する宛先ディレクトリに特定のファイルが存在するかどうかを検索するのに非常に長い (数日もかかる) 時間がかかるためです。数千のファイルがあるディレクトリ内でその名前のファイルを見つけなければならない場合はどうすればよいかのようです。
ファイル エクスプローラーを使用して名前を検索することもできますが、その場合も、前のオプションとは異なりますが、確かにかなりの時間がかかります。これは、ファイル エクスプローラーがディレクトリ内に存在するすべてのファイルをスキャンするため、ディスクの完全なスキャンが完了するまで非常に待たなければならないためです。
しかし、宛先ディレクトリまたはパスに存在するすべてのファイルの名前がすでに提供されていると言う場合はどうなるでしょうか。そうすれば、指定したファイルがターゲットのパスに存在するかどうかを確認するのが非常に簡単になります。また、宛先ディレクトリに存在するすべてのファイルの名前を取得する必要がある場所も示されます。
ディレクトリ内に存在するすべてのファイルの名前のリストがテキスト形式で与えられた場合、その特定のファイルの名前を検索バーに入力するだけです。そして、ファイルが名前のリストに存在するかどうかを確認するのに 1 秒もかかりません。したがって、ディレクトリまたはパスに存在するすべてのファイルの名前のリストを出力できるメソッドを用意することがいかに重要であるかがわかります。
Python には名前のリストを出力できるメソッドが用意されており、そのようなメソッドの 1 つが「os」モジュールの listdir() 関数です。このチュートリアルでは listdir() メソッドを学習し、これを Python プログラムで使用して、指定されたパスに存在するすべてのファイルの名前のリストを出力します。
Pythonはバイトを文字列に変換します
Python の os.listdir() メソッド
listdir() 関数は os モジュールが提供する関数で、この関数を使用すると、指定したパスに存在するすべてのファイル名のリストを出力できます。 listdir() メソッドは、現在の作業ディレクトリ (プログラムが存在する場所) に存在するファイルのリストを出力したい場合にも使用できます。指定したディレクトリに存在するすべてのファイルの名前を取得する必要があるときはいつでも、listdir() メソッドを使用できます。
os.listdir() 関数の構文:
以下は、os モジュールから listdir() 関数を使用するための構文です。
>> os.listdir(pathSpecified)
パラメーター:
上記の構文でわかるように、listdir() メソッド内で引数を指定しただけです。 listdir() 関数は次のパス パラメータを受け取ります。
戻り値の型:
listdir() 関数の戻り値の型は、指定されたディレクトリに存在するすべてのファイルの名前のリストを返すため、「list」です。
os.listdir() メソッド: 実装:
listdir() 関数の動作と実装を理解するために、サンプル プログラムでこの関数を使用し、そこからファイル名のリストを出力します。 listdir() 関数の実装部分は次の 2 つの部分に分割されました。
- 現在の作業ディレクトリからファイル名を出力する
- 指定されたパスからファイル名を出力する
カテゴリごとにサンプルプログラムを使用し、それぞれのメソッドでファイル名を取得します。
方法 1: 現在の作業ディレクトリからファイル名を出力する:
このメソッドでは、os モジュールの別の関数、つまり getcwd() 関数を使用して、現在の作業ディレクトリからファイル名のリストを出力します。このメソッドの実装を理解するには、次のサンプル プログラムを見てください。
例 1:
サラ・アリ・カーンの年齢
パス引数を指定して os.listdir() メソッドを使用した次の Python プログラムを見てください。
# Import os module import os # Use getcwd() function pathSpecified = os.getcwd() # Using listdir() function listOfFileNames = os.listdir(pathSpecified) # Print the name of all files in the current working directory print('Following is the list of names of all the files present in the current working directory: ') print(listOfFileNames)
出力:
Following is the list of names of all the files present in the current working directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ???., Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
ご覧のとおり、現在の作業ディレクトリに存在するすべてのファイルの名前がプログラムの出力に出力されます。
説明:
プログラムに OS モジュールをインポートした後、getcwd() 関数を使用して現在の作業ディレクトリのパスを取得しました。 「pathSpecified」という名前の変数を初期化し、現在の作業ディレクトリのパスをこの変数に保存しました。その後、別の初期化された変数、つまり listOfFileNames で listdir() 関数を使用して、すべてのファイルの名前をこの変数に保存しました。現在の作業パスの初期化された変数を listdir() 関数の引数として提供し、最後に print ステートメントを使用して出力内のすべての名前のリストを出力しました。
プログラム内で他の関数を使用したくない場合は、プログラムが存在する現在のディレクトリからすべてのファイル名を取得することもできます。ディレクトリのパスを引数として指定する代わりに、listdir() 関数をそのままにしておく必要があります。その後、プログラムが実行されると、結果として現在のディレクトリに存在するすべての名前のリストが出力に表示されます。このメソッドの実装を理解するには、次のサンプル プログラムを見てください。
例 2:
引数なしで os.listdir() メソッドを使用した次の Python プログラムを見てください。
# Import os module import os # Using listdir() function listOfFileNames = os.listdir() # Print the name of all files in the current working directory print('Following is the list of names of all the files present in the current working directory: ') print(listOfFileNames)
出力:
Following is the list of names of all the files present in the current working directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ???., Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
ご覧のとおり、Python がインストールされている現在のファイルに存在するすべてのファイルの名前のリストが、プログラムの実行後に出力に出力されます。
Javaのwhileとdo whileループ
説明:
このプログラムでは、パス パラメータを省略していますが、現在の作業ディレクトリに存在するすべてのファイルの名前のリストを取得します。現在の作業ディレクトリからすべてのファイル名のリストを取得したい場合は、このメソッドを使用することをお勧めします。この方法では、引数を使用したり、パス変数を定義したりする必要がないため、プログラム内の余分なコード行が節約され、時間が節約されます。
方法 2: 指定したパスからファイル名を印刷する:
このメソッドでは、listdir() 関数内で指定したディレクトリのパスを指定することで、指定したディレクトリに存在するすべてのファイルの名前のリストを取得できます。ファイルのプロパティ オプションからディレクトリのパスを取得すると、プログラムで同じファイルを使用できます。このメソッドの実装を理解するには、次のサンプル プログラムを見てください。
例 3:
パス引数を指定して os.listdir() メソッドを使用した次の Python プログラムを見てください。
# Import os module import os # Define the specified path pathSpecified = ' C:UsersManishDownloads' # Using listdir() function listOfFileNames = os.listdir(pathSpecified) # Print the name of all files in directory print('Following is the list of names of all the files present in the specified directory: ') print(listOfFileNames)
出力:
Following is the list of names of all the files present in the specified directory: ['.ipynb_checkpoints', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36_.pdf', '1510981730952-33afef2b-eb41-4592-8d3f-bd3e19932d36__19.webp', '1527589430558.webp', '1605467180870.webp', '1605467180879.webp', '160591-fruit-template-16x9.pptx', '1613034967066.webp', '1613034967083.webp', '1613035079325.webp', '1613035270313.webp', '1616159417742.webp', '1616159417758.webp', ........, Windows11InstallationAssistant.exe', 'WindowsPCHealthCheckSetup.msi', 'Word frequency Python.edited.docx', 'wrong.webp', 'X-ray image.webp', 'XML-data.xml', 'yemen500.webp', 'zambia-500.webp', 'zimbabwe-500.webp', 'ZoomInstaller (1).exe', 'ZoomInstaller.exe', '__pycache__', '~$EOC CERTIFICATE.pptx']
見てわかるように、指定されたディレクトリに存在するすべてのファイルの名前がプログラムの出力に出力されます。
説明:
プログラムに OS モジュールをインポートした後、最初にパス変数を初期化して、すべてのファイル名のリストを出力するディレクトリのパスを定義しました。その後、listdir() メソッド内で初期化されたパス変数を使用して、関数の引数としてパスを使用しました。最後に、print ステートメント内で別の初期化された変数 (listOfFileNames) を使用して、結果を出力に出力しました。
結論
このチュートリアルでは、os モジュールの listdir() メソッドについて学び、この関数の重要性を理解しました。この関数の構文について学び、その後、この関数の使用方法を学びます。最後に、listdir() 関数を備えた Python プログラムを使用して、各メソッドの実装を理解しました。