私はPython 2.7とPython 3の両方で動作するPythonプログラムを書こうとしています。私はStringIO
を使用し、Python-Future's cheatsheet on StringIO
によれば、私がしなければならないのは、Python 3スタイルのio
モジュールを使用することだけです。Python 2/3でio.StringIOにfloatを印刷する
問題は、私はprint
このStringIO
にfloats
をINGのだということです。
from __future__ import print_function
from io import StringIO
with StringIO() as file:
print(1.0, file=file)
これは私がu"AAAA"
(unicode_literals
持つか"AAAA"
が有効)1.0
で交換すると
TypeError: string argument expected, got 'str'
になり、それを正常に動作します。私が試した
代替:
BytesIO
。 "unicode
はバッファインターフェイスをサポートしていない"ため、私はもうprint
できません。"{:f}".format(...)
すべてfloat
。これは可能ですが、面倒です。file.write(...)
print(..., file=file)
の代わりに。これはうまくいきますが、現時点では、私はprint()
の使用が何であるか分かりません。
その他のオプションはありますか?
"* print()の使用がもう見られない*":なぜそれが問題になるのでしょうか?なぜ 'file.write()'を使わないのですか?ところで、Python 2で 'file'という変数を持つのは悪い考えです。なぜなら、システムが提供する関数をマスクしているからです(あなたの問題には関係ない)。 – cdarke
'' u '{}' 'とは何故でしょうか? –
@cdarke 'print'は便利ではないでしょうか? 'StringIO'と一緒に便利な使い方をする方法はありませんか?私はファイルに複数の方法で書き込むことを本当に嫌っています。そして、 'print'は現在、読みやすい方法です。 –