【发布时间】:2020-08-07 22:39:15
【问题描述】:
使用:Python 3.7.6,操作系统 Linux (rmp)
我需要在 Python 中提取磁盘和分区的总大小和可用大小。
我尝试了不同的 Python 函数来检索以字节为单位的块大小(结果相同)。 然后我比较了 Linux 命令的结果(也是以字节为单位),结果不同(Linux 命令不同于 Python)。
Python 函数:
- 使用 os.statvfs
import os
statvfs = os.statvfs('/dev/sda')
statvfs.f_frsize *statvfs.f_blocks
statvfs.f_frsize * statvfs.f_bfree
Results:
size of /dev/sda is 1973968896
size of /dev/sda1 is 1973968896 (the same??!)
- 使用 shutil.disk_usage:
print(shutil.disk_usage('/dev/sda'))
usage(total=1973968896, used=0, free=1973968896)
print(shutil.disk_usage('/dev/sda1') )
usage(total=1973968896, used=0, free=1973968896)
我也试过psutil:
import psutil
print(psutil.disk_usage('/dev/sda'))
print(psutil.disk_usage('/dev/sda1'))
same results as 1. and 2.
Linux 命令:
- blockdev --getsize64 #以字节为单位打印设备大小
blockdev --getsize64 /dev/sda
8001563222016
blockdev --getsize64 /dev/sda1
80014737408
- lsblk -b
我在这里想念什么? 为什么 Python 结果与 Linux 命令不同(而所有单位都以字节为单位)? 为什么 sda 和 sda1 的 Python 大小是一样的?
【问题讨论】:
标签: python-3.x linux