gpt4 book ai didi

python - 使用 Python os 模块获取 unix 文件类型

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:10 25 4
gpt4 key购买 nike

我想获取由路径指定的文件的 unix 文件类型(找出它是否是常规文件、命名管道、 block 设备...)

我在文档 os.stat(path).st_type 中找到,但在 Python 3.6 中,这似乎不起作用。

另一种方法是使用 os.DirEntry 对象(例如通过 os.listdir(path)),但只有方法 is_dir()is_file()is_symlink()

有什么想法吗?

最佳答案

您使用 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>

关于python - 使用 Python os 模块获取 unix 文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com