

以下のコードに何か違いはありますか？

[code]

    file = open("sample.txt", "w", encoding="utf-8")
    print("hello", file=file)
    file.write("hello")
    file.close()
    
[/code]

python3ではprint文でファイル書き込みができますが、使い分ける状況などはありますか？


CC BY-SA 3.0
2017-08-25T11:14:54.343
37487
2020-07-25T06:09:31.920
2017-08-29T03:09:59.263
3054
15279
question
python python3
python3のprint関数とwriteメソッドの違い


"ファイルへの出力(書き込み)"という意味では一見同じですが、細かく見ると以下のような違いがあるようです。

> print : デフォルトでは出力の末尾に改行を追加する(変更は可能)。  
>  write : 渡された文字列をそのまま出力。文字列以外は受け取れない。

writeの場合は繰り返し実行した時、以下の通り文字列が繋がって出力されます。

[code]

    write("Hello")
    write("Hello")
    write("Hello")
    # => HelloHelloHello
    
[/code]

参考:  
[Python Tips：改行なしで文字列を出力したい](http://www.lifewithpython.com/2013/12/python-
print-without-.html)


CC BY-SA 4.0
2017-08-25T17:35:44.893
37495
2020-07-25T06:09:31.920
2020-07-25T06:09:31.920
3060
3060
37487
answer


> 使い分ける状況などはありますか？

`print` より `write` の方が速いです。  
質問のような単純なケースで 1.5 〜 3 倍程度速いと思います。  
また、`print` はバイナリモードで開いたファイルオブジェクトには使用できません（引数が bytes
であっても、テキスト表現の文字列に変換して書き込み、失敗します）。

* * *

Python3 の `print`
は文ではなく、[関数になっています](https://docs.python.jp/3/whatsnew/2.6.html#pep-3105-print-
as-a-function)。


CC BY-SA 3.0
2017-08-25T23:22:46.037
37499
2017-08-25T23:22:46.037
3054
37487
answer