पाइथन भरने डिस्क - पायथन, हार्ड ड्राइव

मुझे एक भरे डिस्क को अनुकरण करने के लिए कुछ परीक्षण स्थितियों को स्थापित करने की आवश्यकता है। मैंने बस डिस्क पर कचरा लिखने के लिए निम्नलिखित बनाया:

#!/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()

जहां तक ​​मैं फ्रीस्पेस से रिटर्न वैल्यू देखकर बता सकता हूं, लिखने की विधि फाइल को तब तक नहीं लिखती जब तक कि यह बंद न हो जाए, जिससे समय की स्थिति अमान्य हो जाती है।

क्या कोई तरीका है कि मैं डेटा को सीधे फ़ाइल में लिख सकता हूं? या शायद एक और समाधान?

उत्तर:

जवाब के लिए 2 № 1

यह अनचाहे है लेकिन मुझे लगता है कि इन लाइनों के साथ कुछ आसानी से डिस्क को भरने का सबसे तेज़ तरीका होगा

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

जवाब के लिए 0 № 2

आप लेखन पर डिस्क पूर्ण अपवाद को आजमा सकते हैं / पकड़ सकते हैं।


संबंधित सवाल
सबसे लोकप्रिय