【初心者〜現場で活躍まで】挫折しないPython勉強方法もっと知る

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

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

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

Pythonの勉強方法は、まとめ記事があります。

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モジュールは地味かも知れませんが、知っていると、とても使えるモジュールであると実感して頂けたと思います。

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

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

役に立った、面白かったと思ったら、SNSでシェアしてくれると嬉しいです。

エソラ

もし分からないことがあれば、お問い合わせTwitterにご連絡をいただけると嬉しいです。(Twitterの方が返信早いかも…)

\ 更新の励みになるので、ポチッとしてね /

エソラ

他にもスキルアップやキャリアアップの役に立つ情報が満載です。他の記事も読んで、ゆっくりしていってね!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

コメントする

目次