Python でフォルダ・ファイルの情報を得る方法

パスを指定してフォルダ・ファイルの詳細な情報を取得

Python ではパスを指定することで、フォルダやファイルの詳しい情報を得ることが出来ます。
この記事では、パスを指定して情報を得る方法をご紹介致します。

他の Python の記事⼀覧は こちら

目次

絶対パスの取得

指定したファイルの相対パスから、絶対パスを取得してみましょう。
絶対パスの取得は「os.path.abspath(”ファイル・フォルダのパス”)」で行います。
PCのデスクトップに作成した「PythonTest」フォルダ内で、以下のabspath.pyを作成して実行してみてください。

import os.path
path = os.path.abspath(".")
print (path)

実行してみると、ターミナルに以下の内容が出力されます。

C:\Users\SEMedia\Desktop\PythonTest

ドライブ名やユーザー名(上記ではC:\Users\SEMediaの部分)などは環境によって表記が異なりますが、「\Desktop\Python」の部分は同じ内容で出力されたかと思います。

os.path.abspath(“.”)でパスとして指定した「”.”」は、abspath.pyが存在するフォルダである「PythonTest」を指しています。os.path.abspath()は指定されたパスの絶対値を返すため、フォルダ「PythonTest」の絶対パスを返してきます。

パスが存在するかを取得

「パスが存在するか」と聞いてピンとこないかもしれませんが、要は「ファイル・フォルダが指定した箇所に有るかどうか」という事を表しています。
指定したパスが存在するか否かの取得は「os.path.exists(”ファイル・フォルダのパス”)」で行います。os.path.exists()に存在しているパスを渡せば「True」、存在しないパスを渡せば「False」を返します。
PCのデスクトップに作成した「PythonTest」フォルダ内で、以下のexists.pyを作成して実行してみてください。

import os.path
exists_check = os.path.exists("exists.py")
print (f"exist:{exists_check}")
hoge_check = os.path.exists("hoge.py")
print (f"hoge:{hoge_check}")

実行してみると、ターミナルに以下の内容が出力されます。

exist:True
hoge:False

変数exists_checkには、os.path.exists(“exists.py”)の判定結果が格納されます。
exists.pyは実行時に作成していただいたファイルですので、実際に存在しています。
よって、exists.pyは「パスが存在している」ので、「True」が戻り値として帰ってきています。

変数hoge_checkには、os.path.exists(“hoge.py”)の判定結果が格納されます。
hoge.pyというファイルは今回作成していない為、存在しません。
よって、hoge.pyは「パスが存在していない」ので、「False」が戻り値として帰ってきています。

ファイルサイズを取得

ファイルサイズの取得は「os.path.getsize(”ファイルのパス”)」で行います。
PCのデスクトップに作成した「PythonTest」フォルダ内で、以下のgetsize.pyを作成して実行してみてください。

import os.path
byte_size = os.path.getsize("getsize.py") #ファイルサイズをバイトで取得します。
print (f"byte_size:{byte_size}")
kilo_byte_size = byte_size / 1024 #別の単位に変更する場合は、単位変換を行う必要があります。
print (f"kilo_byte_size:{kilo_byte_size}")

実行してみると、ターミナルに以下の内容が出力されます。

byte_size:170
kilo_byte_size:0.166015625

変数byte_sizeにはos.path.getsize()で取得したファイルサイズがバイト(byte)単位で格納されます。出力結果「byte_size:170」から、このgetsize.pyではファイルサイズが170byteであることが分かります。

別の単位を利用するためには、取得した値に対して単位変換を行ってください。
getsize.pyでは、バイト (byte)→キロバイト (kilobyte)の単位変換を行っています。

ファイルであるか・フォルダであるかを取得

ファイルであるかの判定は「os.path.isfile(”ファイル・フォルダのパス”)」で行います。
フォルダであるかの判定は「os.path.isdir(”ファイル・フォルダのパス”)」で行います。
それぞれ末尾が判定対象となっていますので、用途に応じて使い分けましょう。

PCのデスクトップに作成した「PythonTest」フォルダ内で、以下のis_file_or_folder.pyを作成して、実行してみてください。

import os.path
os.mkdir("sample_directory") #判定例の為、フォルダのサンプルを1つ作成
filelist = os.listdir(".") #現在のフォルダのファイル名リストを取得
for filename in filelist:
    if os.path.isfile(filename): #対象パスがファイルであれば
        print(f"{filename}:File") 
    elif os.path.isdir(filename): #対象パスがフォルダであれば
        print(f"{filename}:Folder")
    else:
        print(f"ERROR")

実行してみると、ターミナルに以下の内容が出力されます。

abspath.py:File
exist.py:File
getsize.py:File
is_file_or_folder.py:File
sample_directory:Folder

現在のフォルダに存在するファイル・フォルダすべてに対し、os.path.isfile()とos.path.isdir()でファイルかフォルダかの判定を行っています。
判定結果に応じてif文で分岐し、print()の出力が変わっていることが確認できます。
どちらのモジュールを使用しても判定が出ますが、判定結果の真偽値が逆になることに留意ください。
(os.mkdir()と、os.listdir()の動きについてはこちらの記事を参照ください)

(Visited 154 times, 2 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次