2016-09-11 3 views
1

コードの下では動作しません:はTypeError:(ファイルをテキストに辞書のキーを書き込み中)文字バッファオブジェクトを期待

以下
with open("testfile.txt",'w') as fw: 
    for key in a: 
     fw.write(a[key]) 

は誤りです:

コード以下は
Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
TypeError: expected a character buffer object` 

作品:

with open('myfile.txt', 'w') as f: 
    for key, value in a.items(): 
     f.write('%s:%s\n' % (key, value)) 

最初のブロックで何が間違っているのか理解してくれる人がいますか?

+0

'a'辞書値を投稿できますか? –

+0

a = {1:2,2:3,3:4} – MSH

答えて

0

エラーメッセージによると、文字バッファオブジェクトのみをファイルに書き込むことができます。たとえば、stringです。ただし、辞書のエントリはintです。文字バッファオブジェクトではありません。したがって、最初に値を文字列に変換してファイルに書き込むことができます。たとえば、この変換は'%d\n' % a[key]または'{0]\n'.format(a[key])で行うことができます。

'%s\n' % a[key]を実際に使用することができ、辞書の要素が整数でなくても機能します。 %sは、str()関数を使用して変換が行われたことを意味します。これは、C %sでは、ヌルで終了する文字列の形式を意味するため、Cでの使用とは異なります。 2番目のプログラムでこれを見ることができました。私が最初に考えたのはstringです。

+0

これは役に立ちます。どうもありがとう! – MSH

関連する問題