====== 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>プログラミング}}