2011-10-29 20 views
5

मैं वर्तमान में मेरे कोड के भीतर नीचे कार्य हो में खुला फ़ाइल: -लिखें दूसरा समारोह (अजगर)

def openFiles(): 
    file1 = open('file1.txt', 'w') 
    file2 = open('file2.txt', 'w') 

मुझे क्या करना आशा करती हूं कि एक दूसरी विधि में, अब है लिखने के लिए है खुली फाइल। हालांकि, जब भी मैं फाइलों को लिखने की कोशिश करता हूं उदाहरण के लिए "file1.write (" हैलो ")", मुझे एक त्रुटि वापस आती है जो मुझे सूचित करती है कि "global variable 'file1' is not defined"। मैंने अपने कोड की शुरुआत में एक स्ट्रिंग के रूप में 'file1' घोषित करने का प्रयास किया है, लेकिन जाहिर है, क्योंकि यह स्ट्रिंग नहीं है लेकिन एक ऑब्जेक्ट है, मुझे यकीन है कि इसे कैसे लिखना है।

कोई सुझाव? मैं चाहता हूं कि कई कार्यों को फाइलों तक पहुंच प्राप्त हो, इसलिए मुझे एक अलग फ़ंक्शन क्यों चाहिए जो उन्हें खोलता है।

धन्यवाद

एक कक्षा

class TestClass: 
    def openFiles(): 
     file1 = open('file1.txt', 'w') 
     file2 = open('file2.txt', 'w') 

    def write_to_files(): 
     ???????? 
+0

आप या तो एक वर्ग बनाने या समारोह के भीतर फ़ाइलों आप उन्हें खोलने के लिए उपयोग कर रहे हैं करने के लिए लिखने के लिए होगा। – Griffin

+0

मूल प्रश्न एक कक्षा को शामिल करने के लिए संपादित किया गया। अब मैं कक्षा के भीतर वस्तु का संदर्भ कैसे दूंगा? – thefragileomen

उत्तर

9

प्रतिनिधित्व करने के लिए जिन्हें आप नीचे देख आप अजगर वैश्विक कीवर्ड का उपयोग कर सकते संपादित।

def openFiles(): 
    global file1 
    global file2 
    file1 = open('file1.txt', 'w') 
    file2 = open('file2.txt', 'w') 

def writeFiles(): 
    file1.write("hello") 

openFiles() 
writeFiles() 

हालांकि मैं आपको इसकी बजाय कक्षा का उपयोग करने की सलाह दूंगा। उदाहरण के लिए।

class FileOperations: 
    def open_files(self): 
     self.file1 = open('file1.txt', 'w') 
     self.file2 = open('file2.txt', 'w') 

    def write_to_files(self): 
     self.file1.write("hello") 

फिर आप कर सकते हैं:

>>> fileHandler = FileOperations() 
>>> fileHandler.open_files() 
>>> fileHandler.write_files() 
+0

मूल प्रश्न को कक्षा में शामिल करने के लिए संपादित किया गया। अब मैं कक्षा के भीतर वस्तु का संदर्भ कैसे दूंगा? – thefragileomen

+0

@thefragileomen मैंने कक्षा के उदाहरण के साथ अपना जवाब भी अपडेट किया। – solartic

+0

बहुत धन्यवाद। की सराहना की। अब परीक्षण करेंगे ... – thefragileomen

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