Text-file class python -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 जवाब

यहाँ समस्या मैं हूँ पर काम कर रहा है:

एक क्लास टेक्स्टफ़ाइल विकसित करें जो टेक्स्ट फ़ाइल का विश्लेषण करने के लिए तरीकों को प्रदान करता है। क्लास टेक्स्टफ़ाइल एक कन्स्ट्रक्टर का समर्थन करेगा, जो फ़ाइल नाम (स्ट्रिंग के रूप में) के रूप में इनपुट के रूप में लेता है और संबंधित टेक्स्ट फ़ाइल से जुड़े टेक्स्टफ़ाइल ऑब्जेक्ट को इंस्टाल्ट करता है। टेक्स्टफ़ाइल को तरीकों का समर्थन करना चाहिए nchars (), nwords (), और nlines () जो क्रमशः अक्षरों, शब्दों और रेखाओं की संख्या को क्रमशः देता है।

इस समस्या पर मेरा प्रयास है:

  class textfile (): def __init __ (स्वयं, फ़ाइल नाम): self.file = open (filename) def nchars (self ): लौटें लैन (self.file.read ()) def nwords (स्वयं): सामग्री = self.file.read () शब्द = content.split () रिटर्न लेन (शब्द) def nlines (स्वयं): content = self File.read () वापसी content.count ('\ n')  

मेरे सारे तरीके काम करने लगते हैं हालांकि, जब मैं दो तरीकों को लगातार चलाता हूं, पाठ-फाइल दूसरी विधि के लिए नहीं बच जाती है और मुझे 0. मिलता है। उदाहरण के लिए, उदाहरण दें, उदाहरण दें। Txt = यह एक वाक्य है।

जब मैं प्रोग्राम चलाता हूं, तो मुझे यह

 > gt; & gt; & gt; x = टेक्स्टफ़ाइल ('example.txt')> gt; & gt; & gt; & gt; प्राप्त करना चाहिए। ; X.nchars ()> gt;> gt; & gt; & gt; x.nwords ()>> gt; & gt; 4>> x.nlines () हालांकि, मुझे यह मिलता है  
  & gt; & gt; & gt; x = textfile ('उदाहरण। & Gt; gt; & gt; Txt ')> gt; & gt; x.nchars ()> gt;> gt; & gt; 1 9 & gt; & gt; & gt; & gt; x.nwords () & gt; & gt; & gt; & gt; 0 & gt; & gt; ; & Gt; x.nlines ()> gt; & gt; & gt; & gt; 0  

या यह:

 > gt; & gt; & gt; ; X = टेक्स्टफ़ाइल ('example.txt')> gt; & gt; x.nwords ()> gt;> gt; & gt; 4> gt; & gt; & gt; & gt; x.nchars () & gt; & gt; & Gt; 0 gt; & gt; & gt; x.nlines ()> gt; & gt; & gt; & gt; 0  

जैसा कि आप देख सकते हैं, तरीकों को व्यक्तिगत रूप से काम करते हैं लेकिन टेक्स्ट -फ़ाइल को अगली विधि में सहेजा नहीं गया है।

मैं क्या कर रहा हूं?

यह इसलिए है क्योंकि read () फ़ंक्शन केवल एक बार एक फ़ाइल के माध्यम से चला जाता है जैसा कि आप पढ़ते हैं, यह उस स्थान को स्थानांतरित करता है जहां फ़ाइल बफर में है अपने कार्य के दौरान, आप फ़ाइल के अंत तक पहुंचते हैं। आप जो कर रहे हैं उसे करने के लिए आपको फ़ाइल को बंद करना और फिर से खोलना होगा। मैं अपने init फ़ंक्शन को रीमेक करने की सलाह देता हूं:

  def __init __ (स्वयं, फ़ाइल नाम): इनपुटफ़ाइल के रूप में खुले (फ़ाइल नाम, 'आर') के साथ: self.content = inputfile.read ()   

और उसके बाद पढ़ने के बजाय हर जगह सामग्री का उपयोग करें

@ चेप्नर एडेड के रूप में, यह संभवतः आपके __ init __ को संपादित करने के लिए बेहतर अभ्यास भी है, इसमें पुन: प्रयोज्यता और सुरक्षा की अनुमति होगी यदि आपका प्रोग्राम फ़ाइल संभाल गमागमन के कारण क्रैश हो जाता है। लंबाई और गिनती (और अन्य) गुण, ताकि सामग्री को खुद को स्मृति में नहीं रखना होगा यह इनपुट फ़ाइल के रूप में खुले (फ़ाइल नाम, 'आर') के साथ

  def __init __ (स्वयं, फ़ाइल नाम) की तरह दिखता है: सामग्री = inputfile.read () self.nChars = len (सामग्री) स्वयं .nLines = content.count ('\ n') self.nWords = len (content.split ())  

Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -