2017-07-10 2 views
2

一つはPythonでファイルを介してライン・バイ・ラインを読むために、古典的なループPythonでファイルの最後に到達すると、readlineはどの値を返しますか?

file_in = open('suppliers.txt', 'r') 
line = file_in.readline() 

while line: 
    line = file_in.readline() 

を使用することができます。

しかし、ループが終了するときに「線」にはどのような値がありますか? Pythonの3ドキュメント読み取り専用:

のreadline(サイズ= -1)

読み取りストリームから1行を返します。 sizeが指定されている場合は、 にほとんどのサイズのバイトが読み込まれます。

バイナリファイルの場合、ラインターミネータは常にb '\ n'です。テキストファイルの場合は、 open()の改行引数を使用して、 ターミネータを認識することができます。 help(file_in.readline)が正確に同じである

readline(size=-1, /) method of _io.BufferedReader instance 

    Read and return a line from the stream. 

    If size is specified, at most size bytes will be read. 

    The line terminator is always b'\n' for binary files; for text 
    files, the newlines argument to open can be used to select the line 
    terminator(s) recognized. 

を与えるパイソン(3.6.1)の私のバージョンで

、あなたがバイナリモードでファイルを開いた場合、:

編集docs quoted above。しかし、Steve Barnesで指摘されているように、ファイルをテキストモードで開くと便利なコメントが表示されます。

+0

これについてのドキュメントは、はるかに理解しやすいものでした。 – user2357112

+0

'TextIOBase'は' readline'がEOF上で空の文字列を返すことを文書化しています。上記の抜粋は、「IOBase」の記述に由来しています。 – chepner

答えて

2

https://docs.python.org/3.6/tutorial/inputoutput.html#methods-of-file-objects

f.readline()は、ファイルから1行を読み取ります。文字列の末尾に改行文字 (\n)が残され、ファイルが改行で終わらない場合は、ファイルの最後の行の で省略されます。これにより、 の戻り値は明白になります。 f.readline()が空の 文字列を返した場合、ファイルの末尾に到達し、空白行は で表され、'\n'で表され、1つの改行のみを含む文字列です。

ファイルを開くのpythonコンソールで
0

(Python 3)コンソールの質問からコードスニペットを実行すると、空の文字列を返します。バイナリモードでファイルを開くと空のBytesオブジェクトが返されます。

これはどこかに記載されていますか?多分それは広範なpython標準の一種ですか?チュートリアルから

4

、 F 、及びそのReadLineメソッドのヘルプを呼び出すと、正確に説明します:

>>> f = open('temp.txt', 'w') 
>>> help(f.readline) 
Help on built-in function readline: 

readline(size=-1, /) method of _io.TextIOWrapper instance 
    Read until newline or EOF. 

    Returns an empty string if EOF is hit immediately. 

各readlineの現在のポイントからファイルの残りの部分で動作それ以降は最終的にEOFを打つことになる。あなたはrbはなくrとバイナリモードでファイル、そしてよりむしろ<class '_io.TextIOWrapper'>オブジェクトを開いた場合は、<class '_io.BufferedReader'>オブジェクトを取得すること

注 - その後、ヘルプメッセージが異なります。

Help on built-in function readline: 

readline(size=-1, /) method of _io.BufferedReader instance 
    Read and return a line from the stream. 

    If size is specified, at most size bytes will be read. 

    The line terminator is always b'\n' for binary files; for text 
    files, the newlines argument to open can be used to select the line 
    terminator(s) recognized. 

そして、このメソッドはEOFに達し、空の文字列ではなく空のバイト配列b''を返します。

上記のすべてがWin10のpython 3.6でテストされていることに注意してください。

+0

私の編集を参照してください - 3.6.1のためのPythonのドキュメントは、もはやこのように動作しません。 –

+1

@JosiahYoder私の編集を参照してください。 –

関連する問題