Это зависит от платформы; Вот решение для Windows:
import ctypes
import platform
def get_free_space(dirname):
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes))
return free_bytes.value / 1024
if __name__ == "__main__":
free_space = get_free_space("path\\")
print(free_space)
Если вы работаете в Linux, я не уверен, но я нашел это:
from os import statvfs
st = statvfs("path/")
free_space = st.f_bavail * st.f_frsize / 1024
Ваша функция должна выглядеть так:
def write_file(contents):
if free_space >= len(contents.encode("utf-8")):
# Write to file.
file = open("filename", "w")
file.write(contents)
file.close()
else:
# Alternative method for dealing with content.