2013-06-30 10 views
5

का उपयोग कर पायथन में मैं एक बड़ी फ़ाइल बना सकते हैं एक फ़ाइल के आकार बढ़ाने से और अब big.file (लगभग) 1 गीगाबाइट है। लिनक्स पर, हालांकि, यह ValueError: mmap length is greater than file size वापस आ जाएगा।द्वारा</p> <pre><code>from mmap import mmap f = open('big.file', 'w') f.close() f = open('big.file', 'r+') m = mmap(f.fileno(), 10**9) </code></pre> <p>विंडोज पर mmap

क्या विंडोज के साथ लिनक्स पर एक ही व्यवहार करने का कोई तरीका है? यही है, mmap का उपयोग कर फ़ाइल के आकार को बढ़ाने में सक्षम होने के लिए?

उत्तर

4

कम से कम POSIX सिस्टम पर, mmap() फ़ाइल के आकार को बढ़ाने (या घटाने) के लिए उपयोग नहीं किया जा सकता है। mmap() का फ़ंक्शन मेमोरी मैप को फ़ाइल के एक हिस्से के लिए है। यह तर्कसंगत है कि जिस चीज को आप मानचित्र बनाने का अनुरोध करते हैं वह वास्तव में मौजूद होना चाहिए! वाकई, मैं वास्तव में हैरान हूं कि आप वास्तव में एमएस विंडोज के तहत ऐसा करने में सक्षम होंगे।

यदि आप फ़ाइल विकसित करना चाहते हैं, तो इससे पहले यह ftruncate() है।

+0

ओह यह उपयोगी कारण है कि आप फ़ाइल को भी छोटा कर सकते हैं। अब मैं चाहता हूं कि विंडोज़ 'ftruncate() '! –

+0

विंडोज़ में 'ftruncate() 'नहीं है? खैर, यह मुझे भी आश्चर्यचकित करता है :-) फिर भी निश्चित रूप से इसमें * बढ़ने या घटाने वाली फ़ाइलों के * कुछ * समकक्ष विधि होनी चाहिए। – Celada

+0

मुझे यह कहना चाहिए कि मैं पाइथन डॉक्स से उस कथन का आधार बना रहा हूं, किसी भी विंडोज दस्तावेज़ से नहीं। –

संबंधित मुद्दे