2017-03-02 10 views
0

私はいくつかの情報を書きますが、その情報をファイルに書き込むメソッドを持つクラスを持っている私の研究に使用しているパッケージを持っています(つまり、メソッドは引数としてファイルオブジェクトをとります) 。しかし、コードではなく、ファイル内の特定の情報が必要です。実際には変数であるPythonでファイルに書き込みますか?

私の現在の解決策は、やりたいようにファイルに情報を書き込んだり、あとでそのファイルを開き、基本的な入出力機能を使って情報を読み込む方法です。

私は、実際に変数やリストなどに書き込んだときにファイルに書き込んだと思うようにメソッドをトリックする方法はありますか?つまり、変数/リスト/配列/実際のファイルではなくコード内の任意のものを指し示すファイルオブジェクトを作成する方法はありますか?

現在:

with open('file.txt','w') as f: 
    method.write_info(f) 

with open('file.txt','r') as f: 
    info = f.readlines() 

私が欲しいもの(多かれ少なかれ、私はちょうど私がよく知っているのと同じオープンファイルの構文を使用しています):

with open(<some sort of variable>) as var_file: 
    method.write_info(var_file) 

#Then do whatever I want with the information 
print <some sort of variable> 

注:私は」 Pythonを使用する2.7

+0

たぶん(に書き込むために一部をファイルに書き込みを置き換え、その関数が含まれてあなたの元のクラスを継承する新しいクラスを作成し、具体的には、その関数をオーバーライド/書き換え変数)を新しいクラスに追加しますか? – xbb

答えて

3

StringIO objectは、ファイルのように機能するインメモリバッファとして使用できます。

+0

OPはPython2を使用するので、Unicode文字列で終了したくない場合は、BytesIOを使用することもできます。 –

1

write_info()によって使用されるfile apiの部分を実装するオブジェクトは実際には動作します。 write_info()のみ次はどうしたら、file.write()を使用していますと仮定:

class PseudoFile(object): 
    def __init__(self): 
     self.content = [] 

    def write(self, value): 
     self.content.append(value) 

    def __str__(self): 
     return "".join(map(str, self.content)) 

    def __repr__(self): 
     return str(self) 


f = PseudoFile() 
method.write_info(f) 
print f 
関連する問題