stat
モジュールを使用して、os.stat(path).st_mode
の結果を解釈します。
>>> import os
>>> import stat
>>> stat.S_ISDIR(os.stat('/dev/null').st_mode)
False
>>> stat.S_ISCHR(os.stat('/dev/null').st_mode)
True
決定されたタイプを返すための一般的な機能を行うことができます。これは、Python 2と3
import enum
import os
import stat
class PathType(enum.Enum):
dir = 0 # directory
chr = 1 # character special device file
blk = 2 # block special device file
reg = 3 # regular file
fifo = 4 # FIFO (named pipe)
lnk = 5 # symbolic link
sock = 6 # socket
door = 7 # door (Py 3.4+)
port = 8 # event port (Py 3.4+)
wht = 9 # whiteout (Py 3.4+)
unknown = 10
@classmethod
def get(cls, path):
if not isinstance(path, int):
path = os.stat(path).st_mode
for path_type in cls:
method = getattr(stat, 'S_IS' + path_type.name.upper())
if method and method(path):
return path_type
return cls.unknown
PathType.__new__ = (lambda cls, path: cls.get(path))
>>> PathType('/dev/null')
<PathType.chr: 1>
>>> PathType('/home')
<PathType.dir: 0>
私は絶対にこれについて知りませんでした。私はドキュメントを開いたばかりだし、うれしいよ、ありがとう。ほかの人のためのGoogle検索を保存するだけです:https://docs.python.org/3/library/pathlib.html – karlosss
これはPython 2用のインストール可能なパッケージとしても利用できます。私は['ruamel.std.pathlib '](https://pypi.python.org/pypi/ruamel.std.pathlib)をPyPI上に置いています。これには' Path'にいくつかの拡張があり、移行に役立つ「PathLibConversionHelper」クラスがあります。 – Anthon