stat モジュールでは、os.stat()、 os.lstat() および os.fstat() (存在すれば) の返す 内容を解釈するための定数や関数を定義しています。stat()、 fstat()、および lstat() の関数呼び出しについての 完全な記述はシステムのドキュメントを参照してください。
stat モジュールでは、特殊なファイル型を判別するための以下の 関数を定義しています:
mode) |
mode) |
mode) |
mode) |
mode) |
mode) |
mode) |
より一般的なファイルのモードを操作するための二つの関数が定義されています:
mode) |
mode) |
通常、ファイルの形式を調べる場合には os.path.is*() 関数 を使うことになります; ここで挙げた関数は同じファイルに対して 複数のテストを同時に行いたいが、stat() システムコール を何度も呼び出してオーバヘッドが生じるのを避けたい場合に便利です。 これらはまた、ブロック型およびキャラクタ型デバイスに対するテスト のように、os.path で扱うことのできないファイルの 情報を調べる際にも便利です。
以下の全ての変数は、os.stat()、 os.fstat()、または os.lstat() が返す 10 要素のタプルにおけるインデクスを単に シンボル定数化したものです。
``ファイルサイズ'' の解釈はファイルの型によって異なります。 通常のファイルの場合、サイズはファイルの大きさをバイトで表した ものです。ほとんどの Unix 系 (特に Linux) における FIFO やソケット の場合、``サイズ'' は os.stat()、 os.fstat()、 あるいは os.lstat() を呼び出した時点で読み出し待ちであった データのバイト数になります; この値は時に有用で、特に上記の特殊なファイル を非ブロックモードで開いた後にポーリングを行いたいといった場合に 便利です。他のキャラクタ型およびブロック型デバイスにおけるサイズ フィーるの意味はさらに異なっていて、背後のシステムコールの実装に よります。
例を以下に示します:
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)