检查文件路径是否为 Python 中的块设备

Check if file path is block device in Python

我在 Linux 下的 Python 中有一些文件路径,我需要弄清楚它是块设备 - 磁盘或分区的表示。此信息在键入 ls -l 时可见,例如

brw-rw---- 1 root disk 8, 1 09-12 18:01 /dev/sda1

我的意思是此输出开头的字母 b。是否可以使用内置库在 Python 中获得类似的东西?最终我可以使用 subprocess 获取 "ls -l" 结果并检查第一个字符是否正确,但我觉得可能有更好的解决方案。不幸的是我找不到这个。谢谢

您可以使用 stat 库使用 stat.S_ISBLK with os.stat:

In [1]: import os

In [2]: import stat

In [3]: mode = os.stat("/dev/sda2").st_mode

In [4]: stat.S_ISBLK(mode)
Out[4]: True

In [5]: mode = os.stat("/dev/sr0").st_mode

In [6]: stat.S_ISBLK(mode)
Out[6]: True

自 3.4 pathlib 提供便捷功能 Path.is_block_device()

>>> import pathlib
>>> p = pathlib.Path('/dev/vda')
>>> p.is_block_device()
True