141:ファイルの属性を変更する
アクセス時刻、更新時刻を変更する
ファイルを最後に参照した時刻、最後に修正した時刻を変更するには os.utime を用います。最後に参照した時刻、最後に更新した時刻をタプルで渡します。
import os
import time
atime = mtime = time.mktime(time.strptime('20090120', '%Y%m%d')) # 2009年1月20日のエポック秒
os.utime('foo.txt', (atime, mtime)) # 参照時刻、最終更新時刻を2009年1月20日に
なお None を渡すと両方とも現在時刻を指定したものとみなされます。
os.utime('foo.txt', None)
アクセスモードを変更する
ファイルのアクセスモードを変更するには os.chmod を使います。モードの指定には stat モジュールの定数を使用します。
import os
from stat import *
os.chmod('foo.txt', S_IRUSR) # 400 所有者の読み込み権限のみの指定
os.chmod('foo.txt', S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) # 644 各定数はビット演算で組み合わせることができる
指定できる定数として次のものが stat モジュールに定義されています。なお、 Windows では stat.IREAD, stat.IWRITE 以外のビットは無視されます。
- S_IRUSR, S_IREAD
- 所有者の読み込み権限
- S_IWUSR, S_IWRITHE
- 所有者の書き込み権限
- S_IXUSR, S_IEXEC
- 所有者の実行権限
- S_IRGRP
- グループの読み込み権限
- S_IWGRP
- グループの書き込み権限
- S_IXGRP
- グループの実行権限
- S_IROTH
- 他のユーザーの読み込み権限
- S_IWOTH
- 他のユーザーの書き込み権限
- S_IXOTH
- 他のユーザーの実行権限
- S_IRWXU
- 所有者の読み書き実行権限
- S_IRWXG
- グループの読み書き実行権限
- S_IRWXO
- 他のユーザーの読み書き実行権限
- S_ISUID
- setuid
- S_ISGID
- setgid
- S_ENFMT
- (System V) ファイル・ロックを強制
- S_ISVTX
- スティッキービット
なお、 644 といった直値での指定もできなくはありません。この場合 8 進リテラルを使うと直感的に書くことができます
os.chmod('foo.txt', 0644) # 0644 == S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
所有者、グループを変更する
ファイルの所有者、グループを指定するには os.chown を使用します。いずれかの ID を変更しないときには -1 を代わりに入れます。なお、ユーザー名に対応するユーザーID 、グループID を求めるには pwd.getpwnam を用います。
import os
import pwd
bar = pwd.getpwnam('bar')
os.chown('foo.txt', bar.pw_uid, bar.pw_gid)
Windows のファイル属性を変更する
pywin32 の win32api.SetFileAttributes? を使用することでファイルの読み取り専用属性などを変更することができます。属性は win32con の定数を用いて指定します。
import win32api
import win32con
win32api.SetFileAttributes('foo.txt', win32con.FILE_ATTRIBUTE_READONLY) # 読み取り専用ファイルとする
win32api.SetFileAttributes('foo.txt', win32con.FILE_ATTRIBUTE_NORMAL) # 通常のファイルにもどす
指定できる定数には次のものがあります。 MSDN ライブラリの SetFileAttributes? も参照してみてください。
- FILE_ATTRIBUTE_NORMAL
- 属性を特に指定しない
- FILE_ATTRIBUTE_ARCHIVE
- アーカイブファイルとする
- FILE_ATTRIBUTE_HIDDEN
- 隠しファイルとする
- FILE_ATTRIBUTE_READONLY
- 読み取り専用とする
- FILE_ATTRIBUTE_SYSTEM
- システムファイルとする
- FILE_ATTRIBUTE_TEMPORARY
- 一時ファイルとする