ホームページ  >  記事  >  バックエンド開発  >  Python の高度なファイルとストリーム

Python の高度なファイルとストリーム

巴扎黑
巴扎黑オリジナル
2017-06-23 15:10:421360ブラウズ

要約: ファイルとストリームに対する Python の操作は基本的に他のプログラミング言語と同じであり、ステートメントは他の言語よりもさらに簡潔です。これら 2 つのオブジェクトに加えて、ファイル関数とストリーム関数もファイルのようなオブジェクト、つまり読み取りのみをサポートし書き込みはサポートしない Python のストリーム関数も対象としています。この記事ではPythonでよく使われるファイルやストリームの操作関数と操作方法を紹介します。

Python の最も基本的なストリーム関数: open

open(name[, mode[,buffering]]): ここで、name はファイルへのパスです。

Python で一般的に使用されるファイル モード:

  • r : 読み取り専用モード

  • w: 上書きモード

  • a: 拡張モード

  • b: バイナリモード (通常、他のモードと併用)

  • +: 追加モード (通常、他のモードと併用)このうち、オープン関数モードのデフォルト値は読み取り専用モードです。バッファリング関数は True または False で、ファイルに対してメモリ アクセラレーションを実行するかどうかを示します。

  • Python の最も基本的な読み取りおよび書き込み関数: 読み取りおよび書き込みと関連コンテンツ

read([size]): 現在の位置からファイルの内容を読み取り続けます。size パラメーターはオプションであり、読み取るバイト数を指定します。番号。デフォルトでは、ファイル内のすべてを読み取ります。

  • readline([size]): テキストの次の行を読みます。 size は、読み取られ、変更された文字数を表します。 Python では、readline を使用してコンテンツの全行を一度に読み取ることができ、readlines を使用してコンテンツの全行を一度に読み取ることができます。

  • write(string): ファイルに特殊文字を書き込みます

  • 注: wirte メソッドは元のファイルをクリアしてから、既存のスクリプトのデータを書き込みます。ただし、同じスクリプトで write を連続して呼び出しても、前のステートメントによって書き込まれた内容は上書きされませんが、前の書き込み位置の後に新しい内容が追加されます。

  • Linux システムでは、「$cat Infile | py_script

出典: Baidu Netdisk Search

"//其中somefile.txt含有文本
$ cat somefile.txt | python somescript.py

# somescript.pyimport sys
text = sys.stdin.read()
words = text.split()
wordcount = len(words)print 'Wordcount:', wordcount

Python の 3 つの標準ストリーム形式、sys.stdin、sys.stdout、sys.stderr を使用できます。

特定のケースでは位置の読み取りと書き込み: シーク関数とテル関数:

Python では、シーク関数とテル関数を使用して、現在のファイル内の次の読み取り文字の位置を取得できます。 サンプル コードは次のとおりです。

f = open(r'text\somefile.txt', 'w')
f.write('01234567890123456789')
f.seek(5)
f.write('Hello, World!')
f.close()
f = open(r'text\somefile.txt')print f.read()
结果:01234Hello, World!89>>> f = open(r'text/somefile.txt')>>> f.read(3)'012'>>> f.tell()3L

ファイルを閉じます。 close() メソッドについては、ファイルが読み取り専用に使用される場合は close() メソッドを呼び出すことをお勧めします。ファイルが書き込みに使用される場合は、書き込み後に close() メソッドを呼び出す必要があります。例外によってファイルが正常に閉じられないようにするには、finally ステートメント内で close メソッドを呼び出すこともできます。また、with ステートメント内にストリーム操作を配置することもできます。ファイルを閉じる問題を考慮する必要はありません。例:

l = ["it is a gooday!",     "Hello, world!",     "Thanks"]with open(r'text/RWLines.txt', 'w') as f:for eachStr in l:
        f.write(eachStr + "\n")"""
This is wrong because file is already closed after with clause:
f.read(2)
"""

また、flush メソッドを呼び出すと、ストリーム内の現在の I./O キャッシュ情報がクリアされます。キャッシュ処理に関しては、次の 2 つの共通点を参照できます。メソッド:

while True:char = f.read(1)if not char: break
    process(char)
f.close()while True:
    line = f.readline()if not line: break
        process(line)
f.close()

©

以上がPython の高度なファイルとストリームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。