26

私はいくつかの数値(numとしましょう)を生成し、数値を出力ファイルに書き込んでいますがoutf.write(num).
、コンパイラはエラーをスローしています:

"outf.write(num)  
TypeError: argument 1 must be string or read-only character buffer, not int".  

どうすればこの問題を解決できますか?

4

5 に答える 5

35

write()は単一の文字列引数しかとらないため、次のようにすることができます。

outf.write(str(num))

また

outf.write('{}'.format(num))  # more "modern"
outf.write('%d' % num)        # deprecated mostly

またwrite、出力に改行を追加しないことに注意してください。必要な場合は、自分で指定する必要があります。

余談

文字列フォーマットを使用すると、出力をより細かく制御できるため、たとえば、次のように記述できます (これらはどちらも同等です)。

num = 7
outf.write('{:03d}\n'.format(num))

num = 12
outf.write('%03d\n' % num)          

3 つのスペースを取得するには、整数値の先行ゼロとそれに続く改行を使用します。

007
012

format()は長い間存在するため、学習/知る価値があります。

于 2012-06-22T17:10:41.220 に答える
3

これらのいずれかが機能するはずです

outf.write("%s" % num)

outf.write(str(num))

print >> outf, num
于 2012-06-22T17:12:34.957 に答える