簡體   English   中英

Python填滿磁盤

[英]Python Filling Up Disk

我需要設置一些測試條件來模擬填滿的磁盤。 我創建了以下內容來簡單地將垃圾寫入磁盤:

#!/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條件無效。

有沒有辦法可以直接將數據寫入文件? 還是另一個解決方案?

這是未經測試的,但我想這些線路上的東西將是最容易填充磁盤的方法

import sys
import errno

write_str = "!"*1024*1024*5  # 5MB

output_path = sys.argv[1]

with open(output_path, "w") as f:
    while True:
        try:
            f.write(write_str)
            f.flush()
        except IOError as err:
            if err.errno == errno.ENOSPC:
                write_str_len = len(write_str)
                if write_str_len > 1:
                    write_str = write_str[:write_str_len/2]
                else:
                    break
            else:
                raise

您可以在寫入時嘗試/捕獲磁盤完全異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM