2011-10-29 22 views
5

私は現在、私のコード内の以下の機能があります: -書き込み(パイソン)

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

を私は何を望んでいることは、今、第二の方法でへの書き込みがあるさファイルを開く。しかし、例えば "file1.write(" hello ")"を使ってファイルに書き込もうとするたびに、"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

クラスを表すために、以下のようにあなたのpython globalキーワードを使用することができます。

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