アクセスありがとうございます!次は「とあるエンジニアのエソラゴト」で検索して頂けると嬉しいです!

【Python入門】osモジュールの使い方

どうも、当ブログ(とあるエンジニアのエソラゴト)を運営している、エンジニアのエソラ(@ya6madev)です。

普段はSIer企業でDXとかAI開発をしながら、自社サービスの開発をしています。

今回はPythonのosモジュールについて記載します。

この記事を読めば、osモジュールの使い方について、網羅的に学ぶことができます。

もし、もっとPythonの文法や便利な使い方について、効率的に学びたいという方がいたら以下の記事がおすすめです。

新しいディレクトリを作成 : os.mkdir()の使い方

新しいディレクトリを作成するためには、os.mkdir()を利用します。

サンプルコードは以下のようになります。

import os

path = 'dir'
os.mkdir(path)

このサンプルコードは作成しようとしたディレクトリが存在しない場合に成功します。

またディレクトリが存在している場合に、このサンプルコードを動かすと、「FileExistsError」が発生します。

またディレクトリを再帰的に作成することはできません。

pathを「dir/test」みたいな感じで再帰的にディレクトリを作成するように指定すると、「FileNotFoundError」が発生します。

ということで、少し不便なので、以下で紹介する「os.makedirs()」を利用する方が良いです。

再帰的にディレクトリを作成 : os.makedirs()の使い方

os.makedirs()を使えば、再帰的にディレクトリを作成することができます。

import os

os.makedirs('dirs/a')

既に存在するディレクトリを作成しようとすると、「FileExistsError」エラーが発生します。

そのため、第2引数に「exist_ok=True」を指定するとエラーが発生しなくなります。

import os

os.makedirs('dirs/a', exist_ok=True)

os.path.join(a, b, …)の使い方

os.path.join(a, b, …)は引数に指定したパスを結合して、パスを作成してくれる関数です。

import os

path = os.path.join('test', 'test.txt')
print(path)

os.path.join(a, b, …)を利用せずに、文字列を結合してパスを作成することもあると思いますが、それはオススメできません。

なぜならば、パスの区切り文字がOSによって異なることがあるので、”/”や”¥”を結合して、パスを作成しても、プログラムを作成したOSとプログラムを実行するOSが違う場合は、エラーとなります。

os.path.exists(path)の使い方

os.path.exists(path)はpathで指定したファイル、もしくはフォルダーが存在するかどうかを確認することが出来ます。

import os

print(os.path.exists('./test.py'))

print(os.path.exists('./test'))

os.path.isfile(path)の使い方

os.path.isfile(path)は、引数で指定したパスがファイルかどうかを判定します。

import os

path1 = './test'
path2 = './test/test.txt'
print(os.path.isfile(path1)) # False
print(os.path.isfile(path2)) # Ture

os.path.isdir(path)の使い方

os.path.isdir(path)は、引数で指定したパスがディレクトリかどうかを判定します。

import os

path1 = './test'
path2 = './test/test.txt'
print(os.path.isdir(path1)) # Ture
print(os.path.isdir(path2)) # False

os.listdir()の使い方

os.listdir()は、pathで指定したディレクトリ内のファイル名とディレクトリ名をリストで返してくれる関数です。

階層としては、同じ階層までを返します。

例えば、以下のような階層のディレクトリとファイルがあったとします。

dirs
 L a
   L a.txt
 L b
   L b.txt 
 L c.txt

そして以下のようなサンプルコードを実行した場合、フォルダまでしか出力されません。

import os

path = './dirs'

for name in os.listdir(path):
    print(name)

#出力結果
a
c.txt
b

このように同階層のファイル、ディレクトリの内容しか出力していません。

また、注意したいのは、リスト内の順番は不定であるということです。

os.walk()の使い方

os.walk(top) は、ルートのディレクトリーのツリーの基準(親)として、そのツリーに含まれる各ディレクトリーごとに、タプル (root, dirs, files) を返します。

同じように以下のような階層のファイルとディレクトリがあったとします。

dirs
 L a
   L a.txt
 L b
   L b.txt 
 L c.txt

そして、以下のようなサンプルコードを実行すると、以下のような出力結果を得ます。

import os

path = './dirs'

for root, dirs, files in os.walk(path):
    print(root)
    print(dirs)
    print(files)

# 出力結果
./dirs
['a', 'b']
['c.txt']
./dirs/a
[]
['a.txt']
./dirs/b
[]
['b.txt']

それぞれのルートフォルダ、ディレクトリ、ファイル名が出力されていることが分かります。

こちらの方が、os.listdir()と比べて、深い階層まで出力できるので、便利です。

os.environの使い方

環境変数の値を取得できます。

import os

print(os.environ)

os.getenv(keydefault=None)の使い方

こちらも、keyで指定した環境変数の値を返します。

例えば、以下のように使います。

import os

print(os.getenv('PYENV_VERSION'))

実行結果は以下。

anaconda3-5.3.1

結果はあたながお使いの環境によって違いますので、ご注意下さい。

osモジュールは非常に便利

ここまで、Pythonのosモジュールの使い方について、見てきました。

osモジュールは地味かも知れませんが、知っていると、とても使えるモジュールであると実感して頂けたと思います。

是非、ここで知った知識を実際のプログラミングに活かして下さい。

ここまでお読み頂き、ありがとうございました。

もし、「面白かった」、「参考になった」という方がいましたら、以下のソーシャルボタンからシェア頂けると泣いて喜びます!!

エソラ
エソラ
またブログランキングにも参加しています。
よろしければ、ポチッとお願いしまーす!

それでは、良いエンジニアライフをお過ごし下さい!

最新情報をチェックしよう!