質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3038閲覧

print関数の file=sys.stdout, flush=Falseが何を指すのか教えてください

minomushia

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/03/21 06:03

pythonドキュメント「print関数」の質問です。

[公式ドキュメント]-----------------------------------------

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) file 引数は、 write(string) メソッドを持つオブジェクトでなければなりません。指定されないか、 None である場合、 sys.stdout が使われます。表示される引数は全てテキスト文字列に変換されますから、 print() はバイナリモードファイルオブジェクトには使用できません。代わりに file.write(...) を使ってください。 出力がバッファ化されるかどうかは通常 file で決まりますが、flush キーワード引数が真ならストリームは強制的にフラッシュされます。

とあります。

(*objects, sep=' ', end='\n')
は理解できました。

例:print("田中","鈴木","吉田","",sep="も",end="合格!") ということだと理解しています。

ですが、
後述の(file=sys.stdout, flush=False)で何ができるのか、理解できません。どういう意味なのでしょうか。

どなたかわかりやすく説明していただけませんでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

①file=sys.stdoutの件です。
stdoutとは標準出力(画面)のことです。なにも指定しないとstdoutが採用され画面に文字が出力されます。
これをファイルに出力するには、下記の①のようにします。
file1.txtに文字(This is a pen)が出力されます。

②flush=Falseの件です。
以下の②を実行すると、直感的には、
Helloが表示され、5秒後にWorldが表示されると思いますが、実行するとそうはなりません。
5秒後に一気にHelloWorldが表示されます。
これは、Helloをprintしたとき、この文字がバッファリングされ、内部にため込まれるためです。
内部にためずに、吐き出すには、flush=Trueを指定します。(これをフラッシュする(flush)といいます)
print('Hello',end='')を
print('Hello',end='',flush=True)
にかえると、
Helloが直ちに表示され、5秒後にWorldが表示されます。
printで出力した内容がフラッシュされる条件としては、以下の3つがあります。
1)明示的にflush=Trueを指定した場合(今回のケース)
2)改行コードを出力した場合(print('World')文のケース)
3)内部バッファが満杯になった場合
このバッファサイズはわかりませんが、print('Hello',end='')を何回も繰り返せば、何回目かに画面に出力されます。

python3

1import time 2 3# ①print関数でファイルに出力 4fo = open('file1.txt','w') 5print('This is a pen',file=fo) 6fo.close() 7 8# ②Helloを直ちに画面にシュル力したい 9print('Hello',end='',flush=True) 10time.sleep(5) 11print('World') 12 13

投稿2022/03/22 05:46

tatsu99

総合スコア5533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

file=sys.stdout 出力先が標準出力を指定しています
flush=False 出力後、出力バッファをフラッシュするかどうかを指定します。falseの場合はフラッシュされず、バッファリングされます

投稿2022/03/21 08:09

編集2022/03/21 08:13
y_waiwai

総合スコア88163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問