2011-10-29 19 views
5

Al momento ho la funzione di seguito nel mio codice: -Scrivi file aperto in seconda funzione (Python)

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

Quello che sto sperando di fare è ora, in un secondo metodo è quello di scrivere al apri il file. Tuttavia, ogni volta che provo a scrivere sui file usando ad esempio "file1.write (" ciao ")", viene restituito un errore che mi informa che "global variable 'file1' is not defined". Ho provato a dichiarare 'file1' come una stringa all'inizio del mio codice, ma ovviamente, dato che non è una stringa ma un oggetto, non sono sicuro di come scriverlo.

Qualche suggerimento? Voglio un certo numero di funzioni per avere accesso ai file, quindi perché mi piacerebbe una funzione separata che li apre.

Grazie

A cura di rappresentare una classe

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

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

potrete sia necessario fare una classe o scrivere ai file all'interno della funzione che si sta utilizzando per aprirli. – Griffin

+0

Domanda originale modificata per contenere una classe. Come faccio ora a fare riferimento all'oggetto all'interno della classe? – thefragileomen

risposta

9

È possibile utilizzare pitone parola chiave globale come illustrato di seguito.

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

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

openFiles() 
writeFiles() 

Tuttavia, si consiglia di utilizzare una classe per questo invece. Per esempio.

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") 

si può poi fare:

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

Domanda originale modificata per contenere una classe. Come faccio ora a fare riferimento all'oggetto all'interno della classe? – thefragileomen

+0

@thefragileomen Ho anche aggiornato la mia risposta con un esempio di classe. – solartic

+0

Mille grazie. Apprezzato. Verificherò ora ... – thefragileomen