ファイルに新しい行を書き込む必要がある場合は、次のようにコーディングする必要があります。
_file_output.write('Fooo line \n')
_
Pythonにwriteln()
メソッドがない理由はありますか?
file
メソッドの対称インターフェースを提供するために、またwriteln()
が意味をなさないため、省略されました。
read()
はwrite()
と一致します:どちらも生データを操作しますreadlines()
はwritelines()
と一致します:どちらもEOLを含む回線で動作しますreadline()
はめったに使用されません。イテレータは同じ仕事をします(オプションのsize
パラメータを除く)writeline()
(またはwriteln()
)は、EOLを追加しないため(write()
の動作に一致するため)、基本的にwritelines()
と同じになります。 )] _)。
print
をファイルに模倣する最良の方法は、Python 2.xまたはfile
キーワード引数の特別なprint-to-file構文を使用することです。ダニエルが提案したように、print()
関数の。
個人的には、file.write('...\n')
よりもprint >>file, ...
構文の方が好きです。
Python 2、使用:
print >>file_output, 'Fooo line '
Python 3、使用:
print('Fooo line ', file=file_output)
私はそうすべきだと感じています。使用できる最も近いものは次のとおりです。
file_output.writelines([foo_msg, '\n'])
print()
はあなたが探している関数です。 Pythonのコアポリモーフィズムの多くと同様に、印刷はメソッドを使用する代わりに組み込み関数によって提供されます(len()
、next()
、repr()
などのように! )。
ユニバーサルインターフェイスであるprint()
関数は、ファイルオブジェクト自体に実装しなくても、より用途が広くなります。この場合、デフォルトで改行で終了しますが、関数呼び出しで選択できます。次に例を示します。
_print("text", file=sys.stderr, end="\n")
_
提案されたユースケースでは、すべてのファイルオブジェクトは.write()
メソッド(現在はprint()
で使用されています)だけでなく、.writeln()
も実装する必要があり、場合によってはもっと!この関数ベースのポリモーフィズムにより、インターフェイスに負担をかけることなく、pythonが非常に豊富になります(ダックタイピングの仕組みを覚えておいてください)。
注:このモデルは常にPythonの中心にあります。私の例では、Pythonに関係するのはより純粋です。
おそらく本当の理由はありません。必要なときに改行を書くのが本当に簡単だからです。それを行うためだけに、追加のメソッドでファイルインターフェイスを乱雑にするのはなぜですか。