Pythonのディレクトリ構造を扱う: osモジュールを使ったファイルとフォルダのナビゲーション

多くの初心者がPythonを初めて学ぶとき、ディレクトリ構造をどのようにナビゲートしてファイルを扱うのか、戸惑うことが多いです。しかし、Pythonのディレクトリ構造を理解して、それを扱う OSモジュールを使うとファイルやフォルダのナビゲーションがもっと簡単になります。このポストでは osモジュールを使ってファイルとディレクトリを参照する方法を詳しく説明します。 これにより、皆さんも効率的なファイル処理が可能になり、複雑なディレクトリ構造を簡単に管理できるようになります。

python 디렉토리 포스트 그림

OSモジュールを使ったディレクトリ探索の基礎

Pythonでディレクトリ構造を扱うためには OSモジュールの理解が必須です。 osモジュールはPythonの標準ライブラリで、オペレーティングシステムと対話し、ファイルやディレクトリに関する操作を処理することができます。これを使うと、Pythonプログラムで様々なファイルやフォルダの操作を簡単に自動化することができます。

Python 디렉토리 구조 다루기 포스트 그림2

os.listdir()でディレクトリリストの取得

OSモジュールの listdir() 関数は、ディレクトリ内にあるファイルとフォルダのリストを取得するために使われます。次のようにとても簡単に使うことができます:

インポートOS

dir_path = "C:/Users/user/user/Documents"
file_list = os.listdir(dir_path)
print(file_list)

上記のコードは、指定されたディレクトリパス(C:/Users/user/user/Documents)にあるすべてのファイルとフォルダのリストをリストで返します。ファイル名だけを返すので、後続処理で必要な作業をすることができます。この時、重要な点はlistdir()が現在のディレクトリ内の隠しファイルやシステムファイルも含めて出力する点です。

os.path.join()でパスを安全に結合する

ファイルやフォルダのパスを結合するとき、パス区切り文字を直接入力するより、 os.path.join()を使う方が安全です。この関数は、オペレーティングシステムによって適切な区切り文字を自動で使用してパスを生成してくれます。

インポートOS

base_path = "C:/Users/user/user/Documents"
file_name = "example.txt"
full_path = os.path.join(base_path, file_name)
print(full_path)

上のコードを実行すると、該当ファイルがあるパスとそのファイルの名前/拡張子が出力されます。オペレーティングシステムごとにパス区切り文字が違うので、この方法を使うとコードの互換性を高めることができます。

Pythonのディレクトリ構造探索の高度な使い方

ディレクトリ内のファイルをリストとして取り込むことに加えて、 OSモジュールを活用すると、複数のディレクトリとサブディレクトリを簡単に移動することができます。これにより、複雑なディレクトリ構造でも目的のファイルを素早く見つけることができます。

Python 디렉토리 구조 다루기 포스트 그림3

os.walk()ですべてのディレクトリとファイルを閲覧する

os.walk()は、ディレクトリツリーを巡回してすべてのファイルやフォルダを探索するのに便利です。この関数は基本的に3つの値を返します:現在のディレクトリのパス、そのディレクトリ内のフォルダのリスト、そしてファイルのリストです。下記のコードを参照してください:

インポートOS

for dirpath, dirnames, filenames in os.walk("C:/Users/user/user/Documents"):
    print(f"現在のディレクトリパス: {dirpath}")
    print(f"フォルダ一覧: {dirnames}")
    print(f"ファイルリスト: {filenames}")

このコードは、指定されたパスの下にあるすべてのフォルダとファイルを検索し、各ディレクトリの構造を一度に把握することができます。 特に、複雑なディレクトリ構造を処理するときに非常に便利です。

ファイル拡張子で絞り込む

ディレクトリ内に様々な種類のファイルがある場合、特定の拡張子だけをフィルタリングしたい場合があります。例えば、".png"ファイルだけをリストとして取得したい場合は、下記のようにコードを書くことができます:

インポートOS

dir_path = "C:/Users/user/user/Documents"
png_files = [file for file in os.listdir(dir_path) if file.endswith(".png")].
print(png_files)

上記のコードは リスト理解を使用して .pngで終わるファイルだけをリストに入れます。 この方法により、目的のファイル形式だけを選択して処理することができます。

osモジュールの便利な追加機能

その他にも OSモジュールはファイルを処理する時、便利な関数をたくさん提供します。主な関数をいくつか見てみましょう。

Python 디렉토리 구조 다루기 포스트 그림4

os.mkdir() と os.makedirs() でディレクトリを作成します。

ファイルを扱う場合、新しいディレクトリを作成する必要がある場合が多いです。 os.mkdir() 関数は単一ディレクトリを生成する時使います、 os.makedirs()は親ディレクトリまで含めて必要なすべてのディレクトリを一度に作成することができます。

インポートOS

# 単一ディレクトリの作成
os.mkdir("C:/Users/user/user/Documents/new_folder")

#サブディレクトリを含む作成
os.makedirs("C:/Users/user/user/Documents/new_folder/sub_folder")

os.remove()でファイルを削除する

ファイルを削除する必要があるときは os.remove() 関数を使うことができます。ただし、この関数はディレクトリではなく、ファイルだけを削除することができます。

インポートOS

file_path = "C:/Users/user/user/Documents/example.txt"
os.remove(file_path)

os.rmdir() と shutil.rmtree() でディレクトリを削除します。

ディレクトリを削除するには os.rmdir()を使うことができますが、この関数は空のディレクトリだけ削除することができます。もし、ディレクトリ内にファイルがあったら shutil.rmtree()を使用する必要があります。

import os
インポートシャチル

# 空のディレクトリの削除
os.rmdir("C:/Users/user/user/Documents/new_folder")

# サブファイルを含むディレクトリの削除
shutil.rmtree("C:/Users/user/user/Documents/new_folder")

まとめ:Pythonのディレクトリ探索を完全に理解する

このポストではPythonでディレクトリ構造をナビゲートしてファイルを扱う方法を学びました。 osモジュールを使うと、ディレクトリのナビゲートからファイルの作成や削除まで様々な作業を簡単に処理することができます。このような基礎的なPythonのディレクトリナビゲーション技術は今後、もっと複雑なプロジェクトを遂行するのにとても役に立つと思います。

Python 디렉토리 구조 다루기 포스트 그림5

Pythonのディレクトリ構造を効率的に扱いたい初心者の方は、上で紹介した方法を使ってもっと簡単にファイルやディレクトリを処理してみましょう。上の内容を理解したら、私たちはどんなことができるのでしょうか?気になる方は こちらをクリックしてみてください!

類似の投稿