2017-09-27 5 views
0

次のコードです:<class '_io.TextIOWrapper'>の理解方法は?

fin=open("myFile.txt","r") # opening a file creates a file handle 

for line in fin: 
    print(line) 

fin.close() # close file handle 

私の質問は次のとおりです。TextIOWrapperオブジェクトフィンを理解するためにどのように?つまり、シーケンス構造を持つ何かであると言うのは安全でしょうか?シーケンスの各項目はファイルの行に "\ n"が追加されていますか?それについて他に何が言えるでしょうか?どのようにそれを理解していますか?

すべてのコメントをいただければ幸いです。

+1

「は\ nが追加されていません」;その行にはあなたのファイルに改行が含まれています。最大で、 '\ r \ n'を' \ n 'に変換しています(Windowsの行末を持つファイルの場合)。 – ShadowRanger

答えて

1

for line in fileは、EOFに達するまでファイルを新しい行区切り文字で分割します(より正確にストリームします)。それが新しい行になるまで読み込んだストリームを考えて、読み込んだ文字を返します。

+0

だから、 "\ n"はEOFに達していない限り、各行に付きます。 – highsky

+0

行を印刷すると、印刷機能によって新しい行効果が自動的に追加されます。 – highsky

+0

このようにコーディングすると、空白行で区切られた各行が出力されます。 – highsky

1

ファイルのようなオブジェクトは、各繰り返しで1行のテキストを生成するiteratorsです。イテレーターは一般的に「正確に1回ループできるもの」を意味します。これらのファイルは、(表現に応じて)seekである限り、このパターンとは異なり、イテレータをファイル内の新しい位置にリセットします。

明らかであるように、これらはではなく、の配列である。 「シーケンス」という用語は特定の意味を持ち、手動で状態を修正することなく、索引付け、行または並列で複数回反復する機能を含みます。

関連する問題