- python
import os
import platform
import ctypes
def get_free_space_k(dirpath):
"""
获取目录剩余空间
:param dirpath: 目录路径 例如 D:\\
:return: 剩余空间 单位 k
"""
if platform.system() == 'Windows':
_free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirpath), None, None, ctypes.pointer(_free_bytes))
return _free_bytes .value / 1024
else:
st = os.statvfs(dirpath)
return st.f_bavail * st.f_frsize / 1024
get_free_space_k(r"/root")
- golang
package main
import (
"fmt"
"os"
"syscall"
"time"
)
func get_free_space_k() uint64 {
var stat syscall.Statfs_t
wd, _ := os.Getwd()
syscall.Statfs(wd, &stat)
size :=stat.Bavail * uint64(stat.Bsize)
return size
}
get_free_space_k()