====== Python モジュール: os ====== ===== 概要 ===== * ファイルシステムを利用するためのモジュール ===== 構文 ===== * 使うときは\\ import os * 以下ではこの import は省略する * ファイルは hoge.txt を扱うものとする ==== ファイルの存在 ==== === 存在の確認 === if os.path.exists("hoge.txt"): print("file exist") else: print("No such file") === ファイルであるかの確認 === if os.path.isfile("hoge.txt"): print("hoge.txt is file") else: print("No such file") === ディレクトリであるかの確認 === if os.path.isdir("hoge.txt"): print("hoge.txt is file") else: print("No such file") === リンクであるかの確認 === if os.path.islink("hoge.txt"): print("hoge.txt is file") else: print("No such file") ==== パーミッション ==== * パーミッションを取得 (Linux のマスク形式で取得)\\ oct(os.stat("hoge.txt").st_mode)[-4:] * 通常の 3 桁の前に ''0'' が付いた形式で返される (例: 0755, 0600, ...) * 参考サイト: [[http://stackoverflow.com/questions/5337070/how-can-i-get-a-files-permission-mask | python - How can I get a file's permission mask? - Stack Overflow]] * パーミッションの設定 (Linux のマスク形式で設定)\\ os.chmod("hoge.txt", 0o0755) * 今回はパーミッションを 0755 に設定している * 通常のパーミッションの 3 桁の前に ''0'' を付ける上、この数字は 8 進数なので、''0o'' を付ける * 参考サイト: [[http://stackoverflow.com/questions/15607903/python-module-os-chmodfile-664-does-not-change-the-permission-to-rw-rw-r-bu | Python module os.chmod(file, 664) does not change the permission to rw-rw-r-- but -w--wx---- - Stack Overflow]] * ''0o'' を付けないと Syntax error (SyntaxError: invalid token) になる * 参考サイト: [[http://stackoverflow.com/questions/1837874/invalid-token-when-using-octal-numbers | python - Invalid Token when using Octal numbers - Stack Overflow]] ==== 更新日時 ==== * ''os.stat'' で ''os.stat_result'' オブジェクトを取得し整形する。\\ os.stat(FILE).st_atime os.stat(FILE).st_mtime os.stat(FILE).st_ctime * ''FILE'': 更新日時を取得するファイル * ''.st_atime'': 最終アクセス日時 * ''.st_mtime'': 最終内容更新日時 * ''.st_ctime'': メタデータ最終更新日時 * 得られる日時は UNIX 時間 (1970 年 1 月 1 日 0 時 0 分 0 秒からの時間) なので、datetime モジュールを用いて変換する。\\ from datetime import datetime datetime.fromtimestamp(os.stat(FILE).st_atime).strftime("%Y/%m/%d %H:%M:%S") datetime.fromtimestamp(os.stat(FILE).st_mtime).strftime("%Y/%m/%d %H:%M:%S") datetime.fromtimestamp(os.stat(FILE).st_ctime).strftime("%Y/%m/%d %H:%M:%S") * 参考サイト: [[https://note.nkmk.me/python-os-stat-file-timestamp/ | Pythonでファイルのタイムスタンプ(作成日時や更新日時)を取得 | note.nkmk.me]] ==== 環境変数取得 ==== * シェル内部での環境変数を取得する方法\\ VARIABLE = os.environ[ENV_VAR] * ''VARIABLE'': シェル変数を受け取るための変数 * ''ENV_VAR'': 環境変数名 (文字列) * 例: \\ hoge = os.environ["PATH"] * nautilus-scripts や nemo-scripts の変数も環境変数であるので、この方法で取得する * 参考サイト: [[http://palepoli.skr.jp/tips/nautilus/script.php | Nautilus をスクリプトで拡張 - L'Isola di Niente]] ==== リンク先を取得 ==== * [[https://siguniang.wordpress.com/2009/11/25/%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%88%E3%81%AE%E3%83%91%E3%82%B9%E3%82%92%E5%8F%96%E5%BE%97/ | シンボリックリンク先のパスを取得 | Siguniang's Blog]] {{tag>プログラミング}}