Python中目录的磁盘使用情况

Python中目录的磁盘使用情况,python,du,Python,Du,为了安全起见,我有一些bash代码 我正在将代码迁移到Python以添加一些功能。新增功能之一是检查/tmp上的可用大小,并断言移动的目录可以放入/tmp 检查可用空间是使用完成的,但如何测量移动目录的磁盘使用率 我可以使用subprocess调用du,或者递归地迭代目录树并求每个文件的大小之和。哪种方法更好?我认为您可能需要重新考虑您的策略。原因有二: 检查是否可以移动文件,断言可以移动文件,然后移动文件为操作提供了内置的争用条件。断言后但在移动文件之前,会在/tmp/中创建一个大文件。。Do

为了安全起见,我有一些bash代码

我正在将代码迁移到Python以添加一些功能。新增功能之一是检查
/tmp
上的可用大小,并断言移动的目录可以放入
/tmp

检查可用空间是使用完成的,但如何测量移动目录的磁盘使用率


我可以使用
subprocess
调用
du
,或者递归地迭代目录树并求每个文件的大小之和。哪种方法更好?

我认为您可能需要重新考虑您的策略。原因有二:

  • 检查是否可以移动文件,断言可以移动文件,然后移动文件为操作提供了内置的争用条件。断言后但在移动文件之前,会在/tmp/中创建一个大文件。。Doh

  • 跨文件系统移动文件将导致巨大的开销。这就是为什么在OSX上,每个卷都有自己的“垃圾”目录。您只需创建一个指向现有数据的新inode,而不是移动组成文件的块

  • 我会考虑文件需要多长时间以及文件的消费者的可见性。如果所有这些都是在后端进行的自动化操作,那么在大多数情况下,重命名一个文件以“隐藏”它,使其不被计算机和人类用户看到是很容易的,并且具有原子操作的附加好处)


    偶尔扫描文件系统中的“旧”文件,以便在一段宽限期后对其进行筛选和rm。没有戏剧性。由于只需重命名即可恢复文件,因此恢复文件也变得容易多了。

    这应该可以做到:

    import os
    path = 'THE PATH OF THE DIRECTORY YOU WANT TO FETCH'
    os.statvfs(path)
    

    请看:这只适用于linux/Unix:statvfs只能提供FS信息,而不仅仅是一条路径