【Python練習】フォルダ内のファイルの一覧&ファイル情報を取得する
万年Python初心者です!練習したことをブログに残しておいて、また勉強したくなった時に簡単に見返せるようにする作戦です。この作業自体が続きそうにありませんが(汗)
今回はフォルダやファイルの情報を取得する方法について試してみたので、簡単に記録しておきます。プログラムでファイル操作を行う機会は多々ありますが、これまでPythonで書くことはなかったので、簡単にやってみました。
フォルダの中身を取得してファイルの種類(ファイル、フォルダ、シンボリックリンク)毎に結果を出力する。ファイルは所有者、更新日、ファイルサイズを表示
実行結果:
説明:
(7行目)osモジュールのscandir()メソッドを実行してカレントディレクトリ(“.”)に存在するファイルやフォルダの情報をos.dirEntryオブジェクトのイテレータとして取得
参照:
os.scandir()メソッド:
https://docs.python.org/3/library/os.html#os.scandir
os.DirEntryオブジェクト:
https://docs.python.org/3/library/os.html#os.DirEntry
イテレータ:
https://www.w3schools.com/python/python_iterators.asp
(10行目)イテレータからos.DirEntryオブジェクトを1つずつ取り出して処理
(12行目)ファイルの種類で処理を分岐
(13行目)コマンドブロンプト(標準出力)にファイル名とファイルの種類を表示、表示フォーマットを整えるためstr.format()メソッドを利用
ファイル名の表示を固定長(30文字)にするために置換フィールドに”{:<30}”と指定、”:”以降がフォーマット指定子で、”<“左揃え、”30″が文字数の指定、21行目で指定している”,”は数字の3桁毎にコンマを表示するための指定
参考:
str.format()メソッド:
https://docs.python.org/3/library/stdtypes.html#str.format
(17~19行目)ファイルの属性情報を取得、”entry.stat().st_uid”はOSで管理されているユーザID、”entry.stat().st_mtime”はファイルの最終更新日、”entry.stat().st_size”はファイルサイズ
最終更新日はある基準日(基準日はOSに依存)からの時間が秒単位で格納されているので、time.localtime()メソットで人間が理解できる形式に変換
参考:
os.stat_resultオブジェクト:
https://docs.python.org/3/library/os.html#os.stat_result
time.localtime()メソッド:
https://docs.python.org/3/library/time.html#time.localtime
time.struct_timeタプル:
https://docs.python.org/3/library/time.html#time.struct_time
(23行目)pwd.getpwuid()メソッドでユーザIDからユーザ名を取得
参考:
pwdモジュール:
https://docs.python.org/3/library/pwd.html
(24行目)time.strftime()メソッドで更新日の表記を指定して出力
参考:
time.strftime()メソッド:
https://docs.python.org/3/library/time.html#time.strftime