我在Linux上使用Python 2.6。最快的方法是什么:
使用
例如,假设/dev/sda2
挂载在/home
上,/dev/mapper/foo
挂载在/home/foo
上。然后,我想从字符串("/dev/mapper/foo", "home/foo")
.
"/home/foo/bar/baz"
,以获取给定分区的使用统计信息?例如,给定/dev/mapper/foo
,我想要获取分区的大小和可用空间(以字节为单位或大约以to为单位)。发布于 2010-11-24 03:53:46
如果您只需要设备上的可用空间,请使用下面的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
文件系统的解决方案,它们的可移植性甚至比这个还要差。)
发布于 2012-09-08 11:56:26
这不会给出分区的名称,但是您可以使用statvfs
Unix系统调用直接获取文件系统统计信息。要在Python中调用它,请使用os.statvfs('/home/foo/bar/baz')
。
结果中的相关字段according to POSIX
无符号长f_frsize基本文件系统数据块大小。fsblkcnt_t f_blocks文件系统上的数据块总数,以f_frsize为单位。fsblkcnt_t f_bfree可用块总数。fsblkcnt_t f_bavail可供非特权进程使用的空闲块数量。
因此,要理解这些值,请乘以f_frsize
import os
statvfs = os.statvfs('/home/foo/bar/baz')
statvfs.f_frsize * statvfs.f_blocks # Size of filesystem in bytes
statvfs.f_frsize * statvfs.f_bfree # Actual number of free bytes
statvfs.f_frsize * statvfs.f_bavail # Number of free bytes that ordinary users
# are allowed to use (excl. reserved space)
发布于 2016-10-01 04:39:44
从Python3.3开始,有一种简单而直接的方法可以使用标准库来实现这一点:
$ cat free_space.py
#!/usr/bin/env python3
import shutil
total, used, free = shutil.disk_usage(__file__)
print(total, used, free)
$ ./free_space.py
1007870246912 460794834944 495854989312
这些数字以字节为单位。有关详细信息,请参阅the documentation。
https://stackoverflow.com/questions/4260116
复制相似问题