2011-08-20 10 views
9

मैंने पायथन में 8   एमबी फ़ाइल खोली, क्योंकि मैं विभिन्न प्रकार के फ़ाइल नामों को बदलने के लिए बैच करना चाहता था। मैं फ़ाइल को एक स्ट्रिंग में लोड कर चुका था और सबकुछ बदलने के लिए स्ट्रिंग विधि को प्रतिस्थापित करता था। मैंने तब देखा कि फ़ाइल का केवल आधा प्रतिस्थापित किया जा रहा था; जैसे कि पायथन पूरी तरह से फ़ाइल खोल नहीं रहा था।एक फ़ाइल का अधिकतम आकार पाइथन खोल सकता है?

क्या स्ट्रिंग आकार सीमा या अधिकतम फ़ाइल आकार सीमा है जो मुझे पायथन में सीमाओं के भीतर खेलना चाहिए?

Python search and replace not replacing properly में कोड का संदर्भ लें।

मैं सुझाए गए कोड में बदल गया हूं। बफर एक 8   एमबी एचटीएमएल फ़ाइल है जो 150k से अधिक लाइनों से अधिक है। प्रतिस्थापन कोड पूरी तरह से काम करता है; यह सिर्फ इतना है कि यह सबकुछ बदल नहीं रहा है। या उदाहरण के लिए एक दर्द है जो दर्द है:

जब मैं स्ट्रिंग एफएफ 10 को एफएफ -10 में बदलने का प्रयास कर रहा हूं, तो इसे एफएफ -010 में बदल दिया जाएगा।

+5

आप किसी भी आकार के साथ फ़ाइल खोल सकते हैं, लेकिन जब आप पूरी फ़ाइल पढ़ते हैं, तो मेमोरी ओवरफ्लो 32 बिट सिस्टम के रूप में हो सकता है केवल 2 जीबी प्रति प्रक्रिया आवंटित कर सकता है या आपके पास पर्याप्त स्मृति नहीं हो सकती है। –

+3

वह कोड दिखाएं जो आपको समस्या दे रहा है, इस तरह आप एक ऐसे से अधिक उपयोगी उत्तर प्राप्त कर सकते हैं जो आपको बताता है कि आपका अनुमान सही है या नहीं। :) –

+0

मेरे कोड – nobody

उत्तर

14

नहीं, फ़ाइल के आकार पर कोई पहुंच योग्य अधिकतम नहीं है पायथन खोल सकता है। 8   एमबी आधुनिक शर्तों में छोटे है। आपने कहीं गलती की है।

लोग स्मृति में डेटा के नियमित रूप से गीगाबाइट लोड करते हैं। आपके कंप्यूटर की रैम के आधार पर, चाहे वह 64- या 32-बिट ओएस और प्रोसेसर है, MemoryError प्राप्त करने से पहले आपके लिए व्यावहारिक अधिकतम 1   GB से कहीं भी हो सकता है।

एक परीक्षण के रूप में, मैंने बस एक 350   एमबी फ़ाइल को एक स्ट्रिंग में लोड किया। इसमें केवल कुछ सेकंड लग गए। मैंने फिर इसे एक फाइल में वापस लिखा। उसमें थोड़ी देर लग गई। मैंने फिर फाइल को धोया। दोनों समान हैं।

पायथन को बड़ी तारों में कोई समस्या नहीं है, जब तक कि आप अपनी रैम, ऑपरेटिंग सिस्टम या प्रोसेसर की सीमा तक नहीं पहुंच जाते।

आप कहते हैं कि "फ़ाइल को स्ट्रिंग में लोड किया गया है और लोड किया गया है" - ऐसा लगता है कि आप पहली जगह की तरह गलती कर सकते थे। एक स्ट्रिंग में फ़ाइल लोड करने के लिए, आप बस fileobject.read() करें। यदि आपने इसे किसी अन्य तरीके से किया है, तो यह समस्या हो सकती है।

+0

तारों के बारे में क्या? – nobody

+0

@nobody आप पर कोई टिप्पणी नहीं –

+0

मैंने एक परीक्षण किया और परिणामों को मेरे उत्तर में जोड़ा। आपके कंप्यूटर के आधार पर – agf

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