一尘不染

查找包含给定文件的文件系统的大小和可用空间

linux

我在Linux上使用Python 2.6。最快的方法是什么:

  • 确定哪个分区包含给定的目录或文件?

例如,假设/dev/sda2已安装在/home/dev/mapper/foo/home/foo"/home/foo/bar/baz"我想从琴弦中取出那副("/dev/mapper/foo", "home/foo")

  • 然后,获取给定分区的使用情况统计信息?例如,给定/dev/mapper/foo我想要获得分区的大小和可用的可用空间(以字节为单位或大约以兆字节为单位)。

阅读 217

收藏
2020-06-02

共1个答案

一尘不染

如果您只需要设备上的可用空间,请参阅os.statvfs()下面的使用答案。

如果您还需要与文件关联的设备名称和安装点,则应调用外部程序以获取此信息。df将提供您所需的所有信息-调用时df filename将在包含文件的分区上打印一行。

举个例子:

import subprocess
df = subprocess.Popen(["df", "filename"], stdout=subprocess.PIPE)
output = df.communicate()[0]
device, size, used, available, percent, mountpoint = \
    output.split("\n")[1].split()

请注意,这相当脆弱,因为它取决于df输出的确切格式,但是我不知道更可靠的解决方案。(有一些解决方案依赖于/proc下面的文件系统,其可移植性甚至不如此解决方案。)

2020-06-02