【发布时间】:2012-11-27 19:22:18
【问题描述】:
我需要设置一些测试条件来模拟已填满的磁盘。我创建了以下内容来简单地将垃圾写入磁盘:
#!/usr/bin/python
import os
import sys
import mmap
def freespace(p):
"""
Returns the number of free bytes on the drive that ``p`` is on
"""
s = os.statvfs(p)
return s.f_bsize * s.f_bavail
if __name__ == '__main__':
drive_path = sys.argv[1]
output_path = sys.argv[2]
output_file = open(output_path, 'w')
while freespace(drive_path) > 0:
output_file.write("!")
print freespace(drive_path)
output_file.flush()
output_file.close()
据我所知,通过查看 freespace 的返回值,write 方法在文件关闭之前不会写入文件,从而使 while 条件无效。
有没有办法可以将数据直接写入文件?或者其他解决方案?
【问题讨论】:
-
尝试
os.fsync写入更改并等待它 -
您使用的是哪个操作系统?
-
一次填满一个字符需要 guite 一段时间,你知道的(除非它已经快满了)。
-
是的,尤其是每次都冲洗它。一次写入 MB 会好很多,然后在开始出错时退出,只写入之前的一半以填充最后一位。
-
您可以使用
dd而不是编写自己的脚本。
标签: python hard-drive