2015-04-01 3 views
6

पैरामीटर max_sizetempfile.SpooledTemporaryFile() अस्थायी फ़ाइल का अधिकतम आकार है जो स्मृति में फिट हो सकता है (इससे पहले डिस्क पर फेंक दिया जाता है)। इस पैरामीटर की इकाइयां क्या हैं (बाइट्स? किलोबाइट्स?)? प्रलेखन (Python 2.7 और Python 3.4 दोनों के लिए) यह इंगित नहीं करता है।SpooledTemporaryFile: अधिकतम (इन-मेमोरी) आकार की इकाइयां?

उत्तर

8

आकार बाइट्स में है। SpooledTemporaryFile() source code से:

def _check(self, file): 
    if self._rolled: return 
    max_size = self._max_size 
    if max_size and file.tell() > max_size: 
     self.rollover() 

और file.tell() बाइट्स में एक पद देता है।

मैं कहूंगा कि पाइथन फ़ाइल ऑब्जेक्ट्स के संबंध में size शब्द का कोई भी उपयोग बाइट्स में व्यक्त एक स्पष्ट उल्लेख वारंट करता है। size के मामले में सौदा करने वाली अन्य सभी फ़ाइल विधियां हमेशा बाइट्स में भी काम करती हैं।

+2

अच्छा बिंदु, बाइट मानक होने के बारे में। हालांकि, यह एक निहित नियम है जिसके लिए पाइथन का अच्छा ज्ञान आवश्यक है: मुझे लगता है कि 'स्पूलडटेमरेरफाइल()' स्पष्ट रूप से इंगित करना चाहिए कि आकार बाइट्स में है, ताकि * कोई भी * इसका उपयोग पहले पाइथन संस्कृति के बिना कर सके। मैं इस पर एक मुद्दा खोलूंगा। – EOL

+0

@EOL: मुझे यकीन नहीं है कि इसकी आवश्यकता है; सी या जावा या सी # या किसी अन्य भाषा में मैंने काम किया है, जब आप फ़ाइल ऑब्जेक्ट से निपटते हैं तो आप बाइट्स से निपटते हैं, या यूनिकोड समर्थन के लिए, कोडपॉइंट्स। केवल उच्च स्तरीय एपीआई या उपयोगकर्ता इंटरफेस से निपटने पर आप अन्य इकाइयों को देखना शुरू कर देते हैं। –

+1

मुझे यकीन है कि दस्तावेज़ीकरण में "बाइट्स" जोड़ने के लिए बहुत अधिक खर्च नहीं होगा: यह उन लोगों द्वारा खोए गए समय की तुलना में कम समय पर खर्च करेगा, जिनके पास मेरा वही सवाल है। मेरे पास आपके उत्तरों में से एक (2012 से) के कारण यह प्रश्न था, जहां आपने 1024 * 10 आकार का उपयोग किया था: यह बेहद छोटा है, इसलिए मैं वास्तव में सोच रहा था कि वे बाइट थे या नहीं। – EOL

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