使用 python 计算卷上剩余的跨平台空间
我需要一种方法来在 Linux、Windows 和 OS X 上使用 python 来确定磁盘卷上的剩余空间。我目前正在解析各种系统调用(df、dir)的输出来完成此操作 - 有更好的方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要一种方法来在 Linux、Windows 和 OS X 上使用 python 来确定磁盘卷上的剩余空间。我目前正在解析各种系统调用(df、dir)的输出来完成此操作 - 有更好的方法吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(12)
请注意,您必须传递目录名称,
GetDiskFreeSpaceEx()
才能工作(
statvfs()
适用于文件和目录)。 可以得到一个目录名来自带有 os.path.dirname() 的文件。
另请参阅
os.statvfs()
的文档 和GetDiskFreeSpaceEx
。Note that you must pass a directory name for
GetDiskFreeSpaceEx()
to work(
statvfs()
works on both files and directories). You can get a directory namefrom a file with
os.path.dirname()
.Also see the documentation for
os.statvfs()
andGetDiskFreeSpaceEx
.使用
pip install psutil
安装 psutil。 然后您可以使用以下命令获取可用空间量(以字节为单位):Install psutil using
pip install psutil
. Then you can get the amount of free space in bytes using:您可以使用 wmi 模块(适用于 windows)和 os.statvfs(适用于 unix)(
window )
适用于 unix 或 linux 的
You could use the wmi module for windows and os.statvfs for unix
for window
for unix or linux
如果您正在运行 python3:
使用
shutil.disk_usage()
和os.path.realpath('/')
名称正则化有效:或者
给您使用的总数, & 可用空间(MB)。
If you're running python3:
Using
shutil.disk_usage()
withos.path.realpath('/')
name-regularization works:Or
giving you the total, used, & free space in MB.
如果您不想添加其他依赖项,您可以在 Windows 中使用 ctypes 直接调用 win32 函数调用。
If you dont like to add another dependency you can for windows use ctypes to call the win32 function call directly.
一个好的跨平台方法是使用 psutil: http://pythonhosted.org/psutil/#disks
(请注意,您需要 psutil 0.3.0 或更高版本)。
A good cross-platform way is using psutil: http://pythonhosted.org/psutil/#disks
(Note that you'll need psutil 0.3.0 or above).
从Python 3.3开始,您可以使用 shutil.disk_usage("/").free< /a> 来自 Windows 和 UNIX 的标准库:)
From Python 3.3 you can use shutil.disk_usage("/").free from standard library for both Windows and UNIX :)
您可以使用 df 作为跨平台方式。 它是GNU 核心实用程序的一部分。 这些是每个操作系统上都应该存在的核心实用程序。 但是,默认情况下,它们不会安装在 Windows 上(这里,GetGnuWin32 会派上用场)。
df 是一个命令行实用程序,因此需要一个包装器来编写脚本。
例如:
You can use df as a cross-platform way. It is a part of GNU core utilities. These are the core utilities which are expected to exist on every operating system. However, they are not installed on Windows by default (Here, GetGnuWin32 comes in handy).
df is a command-line utility, therefore a wrapper required for scripting purposes.
For example:
下面的代码在 Windows 上返回正确的值
Below code returns correct value on windows
os.statvfs() 函数是获取该信息的更好方法类 Unix 平台(包括 OS X)。 Python 文档说“可用性:Unix”,但值得在您的 Python 构建中检查它是否也适用于 Windows(即文档可能不是最新的)。
否则,您可以使用 pywin32 库直接调用 GetDiskFreeSpaceEx 函数。
The os.statvfs() function is a better way to get that information for Unix-like platforms (including OS X). The Python documentation says "Availability: Unix" but it's worth checking whether it works on Windows too in your build of Python (ie. the docs might not be up to date).
Otherwise, you can use the pywin32 library to directly call the GetDiskFreeSpaceEx function.
我不知道有什么跨平台方法可以实现此目的,但也许对您来说一个好的解决方法是编写一个包装类来检查操作系统并为每个系统使用最佳方法。
对于 Windows,win32 中有 GetDiskFreeSpaceEx 方法扩展。
I Don't know of any cross-platform way to achieve this, but maybe a good workaround for you would be to write a wrapper class that checks the operating system and uses the best method for each.
For Windows, there's the GetDiskFreeSpaceEx method in the win32 extensions.
以前的大多数答案都是正确的,我正在使用Python 3.10和shutil。
我的用例仅限于 Windows 和 C 驱动器(但您也应该能够为 Linux 和 Mac 扩展此功能(这里是 文档)
以下是 Windows 的示例:
Most previous answers are correct, I'm using Python 3.10 and shutil.
My use case was Windows and C drive only ( but you should be able to extend this for you Linux and Mac as well (here is the documentation)
Here is the example for Windows: