stat — stat()の結果の解釈—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/stat
移動先:案内検索

stat — stat()の結果の解釈

ソースコード: :source: `Lib / stat.py`



stat モジュールは、 os.stat()os.fstat()、および os.lstat()の結果を解釈するための定数と関数を定義します。 (存在する場合)。 stat()fstat()、およびlstat()呼び出しの詳細については、システムのドキュメントを参照してください。

バージョン3.4で変更: statモジュールはC実装によってサポートされています。


stat モジュールは、特定のファイルタイプをテストするために次の関数を定義します。

stat.S_ISDIR(mode)
モードがディレクトリからのものである場合は、ゼロ以外を返します。
stat.S_ISCHR(mode)
モードが文字特殊デバイスファイルからのものである場合は、ゼロ以外を返します。
stat.S_ISBLK(mode)
モードがブロック特殊デバイスファイルからのものである場合は、ゼロ以外を返します。
stat.S_ISREG(mode)
モードが通常のファイルからのものである場合は、ゼロ以外を返します。
stat.S_ISFIFO(mode)
モードがFIFO(名前付きパイプ)からのものである場合は、ゼロ以外を返します。
stat.S_ISLNK(mode)
モードがシンボリックリンクからのものである場合は、ゼロ以外を返します。
stat.S_ISSOCK(mode)
モードがソケットからのものである場合は、ゼロ以外を返します。
stat.S_ISDOOR(mode)

モードがドアからのものである場合は、ゼロ以外を返します。

バージョン3.4の新機能。

stat.S_ISPORT(mode)

モードがイベントポートからのものである場合は、ゼロ以外を返します。

バージョン3.4の新機能。

stat.S_ISWHT(mode)

モードがホワイトアウトからのものである場合は、ゼロ以外を返します。

バージョン3.4の新機能。

ファイルのモードをより一般的に操作するために、2つの追加機能が定義されています。

stat.S_IMODE(mode)
os.chmod()で設定できるファイルのモードの部分、つまり、ファイルの許可ビットに加えて、スティッキービット、set-group-id、およびset-user-idビットを返します。 (それらをサポートするシステム上)。
stat.S_IFMT(mode)
ファイルタイプを説明するファイルのモードの部分を返します(上記のS_IS*()関数で使用されます)。

通常、ファイルのタイプをテストするには、os.path.is*()関数を使用します。 ここでの関数は、同じファイルの複数のテストを実行していて、各テストのstat()システムコールのオーバーヘッドを回避したい場合に役立ちます。 これらは、ブロックデバイスや文字デバイスのテストなど、 os.path で処理されないファイルに関する情報を確認するときにも役立ちます。

例:

import os, sys
from stat import *

def walktree(top, callback):
    '''recursively descend the directory tree rooted at top,
       calling the callback function for each regular file'''

    for f in os.listdir(top):
        pathname = os.path.join(top, f)
        mode = os.stat(pathname).st_mode
        if S_ISDIR(mode):
            # It's a directory, recurse into it
            walktree(pathname, callback)
        elif S_ISREG(mode):
            # It's a file, call the callback function
            callback(pathname)
        else:
            # Unknown file type, print a message
            print('Skipping %s' % pathname)

def visitfile(file):
    print('visiting', file)

if __name__ == '__main__':
    walktree(sys.argv[1], visitfile)

ファイルのモードを人間が読める文字列に変換するための追加のユーティリティ関数が提供されています。

stat.filemode(mode)

ファイルのモードを「-rwxrwxrwx」の形式の文字列に変換します。

バージョン3.3の新機能。

バージョン3.4で変更:この関数は S_IFDOORS_IFPORT 、および S_IFWHT をサポートします。

以下のすべての変数は、 os.stat()os.fstat()、または os.lstat()によって返される10タプルへの単なるシンボリックインデックスです。 。

stat.ST_MODE
iノード保護モード。
stat.ST_INO
iノード番号。
stat.ST_DEV
デバイスiノードはに存在します。
stat.ST_NLINK
iノードへのリンクの数。
stat.ST_UID
所有者のユーザーID。
stat.ST_GID
所有者のグループID。
stat.ST_SIZE
プレーンファイルのバイト単位のサイズ。 いくつかの特別なファイルを待機しているデータの量。
stat.ST_ATIME
最終アクセスの時刻。
stat.ST_MTIME
最終変更の時刻。
stat.ST_CTIME
オペレーティングシステムによって報告される「ctime」。 一部のシステム(Unixなど)では、最後のメタデータ変更の時刻であり、他のシステム(Windowsなど)では、作成時刻です(詳細については、プラットフォームのドキュメントを参照してください)。

「ファイルサイズ」の解釈は、ファイルの種類によって異なります。 プレーンファイルの場合、これはバイト単位のファイルのサイズです。 Unixのほとんどのフレーバー(特にLinuxを含む)でのFIFOおよびソケットの場合、「サイズ」は、 os.stat()の呼び出し時に読み取られるのを待機しているバイト数です。 ] os.fstat()、または os.lstat(); これは、特にノンブロッキングオープン後にこれらの特別なファイルの1つをポーリングする場合に役立つことがあります。 他の文字およびブロックデバイスのサイズフィールドの意味は、基盤となるシステムコールの実装によってさらに異なります。

以下の変数は、 ST_MODE フィールドで使用されるフラグを定義します。

上記の関数の使用は、最初のフラグセットの使用よりも移植性があります。

stat.S_IFSOCK
ソケット。
stat.S_IFLNK
シンボリックリンク。
stat.S_IFREG
通常のファイル。
stat.S_IFBLK
ブロックデバイス。
stat.S_IFDIR
ディレクトリ。
stat.S_IFCHR
キャラクターデバイス。
stat.S_IFIFO
FIFO。
stat.S_IFDOOR

ドア。

バージョン3.4の新機能。

stat.S_IFPORT

イベントポート。

バージョン3.4の新機能。

stat.S_IFWHT

ホワイトアウト。

バージョン3.4の新機能。

ノート

S_IFDOORS_IFPORT 、または S_IFWHT は、プラットフォームがファイルタイプをサポートしていない場合、0として定義されます。


次のフラグは、 os.chmod()mode 引数でも使用できます。

stat.S_ISUID
UIDビットを設定します。
stat.S_ISGID
set-group-IDビット。 このビットにはいくつかの特別な用途があります。 ディレクトリの場合、BSDセマンティクスがそのディレクトリに使用されることを示します。そこで作成されたファイルは、作成プロセスの有効なグループIDからではなく、ディレクトリからグループIDを継承し、そこで作成されたディレクトリも S_ISGIDを取得します。 ビットセット。 グループ実行ビット( S_IXGRP )が設定されていないファイルの場合、set-group-IDビットは必須のファイル/レコードロックを示します( S_ENFMT も参照)。
stat.S_ISVTX
スティッキービット。 このビットがディレクトリに設定されている場合、そのディレクトリ内のファイルは、ファイルの所有者、ディレクトリの所有者、または特権プロセスによってのみ名前を変更または削除できることを意味します。
stat.S_IRWXU
ファイル所有者のアクセス許可のマスク。
stat.S_IRUSR
所有者は読み取り権限を持っています。
stat.S_IWUSR
所有者には書き込み権限があります。
stat.S_IXUSR
所有者には実行権限があります。
stat.S_IRWXG
グループ権限のマスク。
stat.S_IRGRP
グループには読み取り権限があります。
stat.S_IWGRP
グループには書き込み権限があります。
stat.S_IXGRP
グループには実行権限があります。
stat.S_IRWXO
他のユーザーのアクセス許可をマスクします(グループ内ではありません)。
stat.S_IROTH
他の人は読み取り許可を持っています。
stat.S_IWOTH
他の人は書き込み許可を持っています。
stat.S_IXOTH
他の人は実行許可を持っています。
stat.S_ENFMT
SystemVファイルロックの実施。 このフラグは S_ISGID と共有されます。ファイル/レコードのロックは、グループ実行ビット( S_IXGRP )が設定されていないファイルに適用されます。
stat.S_IREAD
S_IRUSR のUnixV7シノニム。
stat.S_IWRITE
S_IWUSR のUnixV7シノニム。
stat.S_IEXEC
S_IXUSR のUnixV7シノニム。

os.chflags()flags 引数では、次のフラグを使用できます。

stat.UF_NODUMP
ファイルをダンプしないでください。
stat.UF_IMMUTABLE
ファイルは変更できません。
stat.UF_APPEND
ファイルはにのみ追加できます。
stat.UF_OPAQUE
ユニオンスタックを通して表示すると、ディレクトリは不透明です。
stat.UF_NOUNLINK
ファイルの名前を変更したり、削除したりすることはできません。
stat.UF_COMPRESSED
ファイルは圧縮されて保存されます(Mac OS X 10.6以降)。
stat.UF_HIDDEN
ファイルはGUI(Mac OS X 10.5+)に表示されるべきではありません。
stat.SF_ARCHIVED
ファイルはアーカイブされている可能性があります。
stat.SF_IMMUTABLE
ファイルは変更できません。
stat.SF_APPEND
ファイルはにのみ追加できます。
stat.SF_NOUNLINK
ファイルの名前を変更したり、削除したりすることはできません。
stat.SF_SNAPSHOT
ファイルはスナップショットファイルです。

詳細については、* BSDまたはMacOSシステムのマニュアルページ chflags(2)を参照してください。

Windowsでは、 os.stat()によって返されるst_file_attributesメンバーのビットをテストするときに、次のファイル属性定数を使用できます。 これらの定数の意味の詳細については、 WindowsAPIドキュメントを参照してください。

stat.FILE_ATTRIBUTE_ARCHIVE
stat.FILE_ATTRIBUTE_COMPRESSED
stat.FILE_ATTRIBUTE_DEVICE
stat.FILE_ATTRIBUTE_DIRECTORY
stat.FILE_ATTRIBUTE_ENCRYPTED
stat.FILE_ATTRIBUTE_HIDDEN
stat.FILE_ATTRIBUTE_INTEGRITY_STREAM
stat.FILE_ATTRIBUTE_NORMAL
stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
stat.FILE_ATTRIBUTE_NO_SCRUB_DATA
stat.FILE_ATTRIBUTE_OFFLINE
stat.FILE_ATTRIBUTE_READONLY
stat.FILE_ATTRIBUTE_REPARSE_POINT
stat.FILE_ATTRIBUTE_SPARSE_FILE
stat.FILE_ATTRIBUTE_SYSTEM
stat.FILE_ATTRIBUTE_TEMPORARY
stat.FILE_ATTRIBUTE_VIRTUAL

バージョン3.5の新機能。

Windowsでは、 os.lstat()によって返されるst_reparse_tagメンバーと比較するために次の定数を使用できます。 これらはよく知られている定数ですが、完全なリストではありません。

stat.IO_REPARSE_TAG_SYMLINK
stat.IO_REPARSE_TAG_MOUNT_POINT
stat.IO_REPARSE_TAG_APPEXECLINK

バージョン3.8の新機能。