检查文件路径是否为 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
我在 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