今回は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(key, default=None)の使い方
こちらも、keyで指定した環境変数の値を返します。
例えば、以下のように使います。
import os
print(os.getenv('PYENV_VERSION'))
実行結果は以下。
anaconda3-5.3.1
結果はあたながお使いの環境によって違いますので、ご注意下さい。
osモジュールは非常に便利
ここまで、Pythonのosモジュールの使い方について、見てきました。
osモジュールは地味かも知れませんが、知っていると、とても使えるモジュールであると実感して頂けたと思います。
是非、ここで知った知識を実際のプログラミングに活かして下さい。
コメント
コメント一覧 (2件)
[…] 【Python入門】osモジュールの使い方 […]
[…] 【Python入門】osモジュールの使い方 […]