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

asa*_*128 2 python linux filesystems

我在Linux下有一些Python文件路径,我需要弄清楚它是否是块设备 - 表示磁盘或分区.输入ls -l时可以看到此信息,例如

brw-rw---- 1 root disk 8, 1 09-12 18:01 /dev/sda1
Run Code Online (Sandbox Code Playgroud)

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

小智 6

由于 3.4pathlib提供了方便的函数Path.is_block_device()

>>> import pathlib
>>> p = pathlib.Path('/dev/vda')
>>> p.is_block_device()
True
Run Code Online (Sandbox Code Playgroud)


Pad*_*ham 5

你可以使用stat.S_ISBLKos.stat来使用statlib :

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
Run Code Online (Sandbox Code Playgroud)