ホームページ  >  記事  >  バックエンド開発  >  Python ファイルの読み取りおよび書き込み方法についての深い理解

Python ファイルの読み取りおよび書き込み方法についての深い理解

高洛峰
高洛峰オリジナル
2017-03-17 17:14:481451ブラウズ

1.open

open を使用してファイルを開いた後、忘れずにファイルオブジェクトの close() メソッドを呼び出す必要があります。たとえば、try/finally ステートメントを使用すると、ファイルを最後に確実に閉じることができます。

file_object = open('thefile.txt')

try:

all_the_text = file_object.read( )

finally:

file_object.close( )

注: はできませんファイルを開くときに例外が発生すると、ファイル オブジェクト file_object は close() メソッドを実行できないため、open ステートメントを try ブロックに配置します。

2. ファイルの読み取り

テキスト ファイルの読み取り

input = open('data', 'r')

#2 番目のパラメータのデフォルトは r

input = open('data')

バイナリ読み取りfile

input = open('data', 'rb')

すべての内容を読む

file_object = open('thefile.txt')

try:

all_the_text = file_object.read( )

finally :

file_object.close( )

固定バイトの読み取り

file_object = open('abinfile', 'rb')

try:

while True:

chunk = file_object.read (100)

各行を読んでください

list_of_all_the_lines = file_object.

readline

s( )

ファイルがテキスト ファイルの場合は、ファイル オブジェクトを直接走査して各行を取得することもできます:

for

file_object の行:

プロセス行

3. ファイルを書き込む テキストファイルを書き込む

output = open('data', 'w')

バイナリファイルを書き込む

output = open(' data', 'wb')

書き込みファイルを追加

output = open('data' , 'w+')

データを書き込む

file_object = open('thefile.txt', 'w')

file_object.write(all_the_text)

file_object.close( )

複数行を書き込む

file_object.writelines(list_of_text_strings)

writelines を呼び出して複数行を書き込む方が、write を使用して書き込むよりもパフォーマンスが高いことに注意してください。 1回。

ログ ファイルを処理するとき、次のような状況がよく発生します。ログ ファイルが巨大で、一度にファイル全体をメモリに読み込んで処理することが不可能です。たとえば、ログ ファイルをコンピュータで処理する必要があります。 2GB の物理メモリの場合、一度に処理できるのはその内容の 200MB のみです。

Python

では、組み込みの File オブジェクトは、そのようなことを実現するための readlines(sizehint)

関数

を直接提供します。次のコードを例に挙げます。

file = open('test.log', 'r')sizehint = 209715200 # 200M

position

= 0lines = file.readlines(sizehint)while not file.tell() - Position < ; 0: Position = file.tell() Lines = file.readlines(sizehint)

readlines(sizehint) 関数が呼び出されるたびに、約 200MB のデータが返され、返されるデータは完全な行データである必要があります。この場合、返されるデータのバイト数は、sizehint で指定された値よりわずかに大きくなります (readlines(sizehint) 関数が最後に呼び出された場合を除く)。通常、Python はユーザー指定の sizehint 値を内部キャッシュ サイズの整数倍に自動的に調整します。

file は Python の特別なタイプで、Python プログラムで外部ファイルを操作するために使用されます。 Python ではすべてがオブジェクトであり、File も例外ではありません。ファイル メソッドと属性があります。まず、ファイル オブジェクトの作成方法を見てみましょう:

file(name[, mode[,buffering]])

file() 関数は、ファイル オブジェクトを作成するために使用されます。この関数には、open() というエイリアスがあります。 組み込み関数の方がわかりやすいかもしれません。そのパラメータを見てみましょう。そのパラメータはすべて string

の形式で渡されます。 name はファイルの名前です。

mode はオープン モードで、オプションの値は r wa a U で、それぞれ読み取り (デフォルト) と書き込みを表し、さまざまな改行をサポートするモードを追加します。 w または a モードでファイルを開く場合、ファイルが存在しない場合は自動的に作成されます。また、w モードを使用して既存のファイルを開く場合、初期ファイル操作マークがファイルの先頭にあるため、この時点で書き込み操作を実行すると、元のファイルの内容は消去されます。間違いなく削除されます。歴史的な理由により、改行文字にはシステムごとに異なるモードがあります。たとえば、Unix では n ですが、U モードでファイルを開くと、すべての改行モードがサポートされます。これは ' を意味します。 r' 'n' 'rn' はすべて改行を表すことができ、このファイルで使用される改行文字を格納するために使用されるタプルがあります。ただし、改行にはさまざまなモードがありますが、Python で読み取る場合は代わりに n が使用されます。モード文字の後に、2 つの記号 + b t を追加することもできます。これらは、それぞれ、ファイルの読み取りと書き込みを同時に行うことができ、ファイルをバイナリ モードまたはテキスト モード (デフォルト) で開くことができることを示します。

buffering 0 の場合はバッファリングなしを意味し、1 の場合は「行バッファリング」を意味し、1 より大きい数値の場合はバッファーのサイズを意味します (バイト単位である必要があります)。

ファイル オブジェクトには独自のプロパティとメソッドがあります。まずはファイルの属性を見てみましょう。

closed #ファイルが閉じられているかどうかをマークし、close()で書き換えます

encoding #ファイルエンコード

mode #オープンモード

name #ファイル名

newlines #ファイルで使用される改行モードはタプル

softspace #boolean 型 (通常は 0) は、print

ファイルの読み取りおよび書き込みメソッドに使用されると言われています:

F.read([size]) #size は読み取りの長さ (バイト単位)

F.readline([size])

#size が定義されている場合は、行の一部のみを返すことができます

F.readlines([size])

# の各行を処理します。ファイルを list のメンバーとして返し、このリストを返します。実際、これはループ内で readline() を呼び出すことによって内部的に実装されます。 size パラメータが指定されている場合、size は読み取られるコンテンツの全長を表します。これは、ファイルの一部のみが読み取られることを意味します。

F.write(str)

#str をファイルに書き込みます。write() は str の後に改行文字を追加しません

F.writelines(seq)

#seq の内容をすべてファイルに書き込みます。この関数も、各行の後に何も追加せずに、忠実に記述するだけです。

ファイルのその他のメソッド:

F.close()

#ファイルを閉じます。 Python は、使用されなくなったファイルを自動的に閉じますが、この機能は保証されていません。自分でファイルを閉じる習慣を身に付けることをお勧めします。ファイルを閉じた後にファイルを操作すると、ValueError が生成されます

F.flush()

#バッファの内容をハードディスクに書き込みます

F.fileno()

#Return a long integer "ファイルラベル"

F.isatty()

#ファイルが端末デバイスファイルかどうか(UNIXシステムの場合)

F.tell()

#ファイル操作マークの現在位置を返す、 Origin

F.next()

#次の行に戻り、ファイル操作マーカーを次の行に移動します。ファイルが for ... in file などのステートメントで使用される場合、トラバーサルを実装するために next() 関数が呼び出されます。

F.seek(offset[,whence])

#ファイル操作マークをオフセット位置に移動します。このオフセットは通常、ファイルの先頭を基準にして計算され、通常は正の数になります。ただし、whence パラメーターが指定されている場合は、この限りではありません。whence を 0 にすると最初から計算を開始し、1 を指定すると現在の位置を原点として使用できます。 2はファイルの末尾を起点として計算することを示します。ファイルを a または a+ モードで開いた場合、書き込み操作が実行されるたびに、ファイル操作マークは自動的にファイルの最後に戻ることに注意してください。

F.truncate([size])

#指定されたサイズにファイルをカットします。デフォルトでは、現在のファイル操作マークの位置までカットされます。サイズがファイル サイズより大きい場合、システムによっては、ファイルが変更されないか、対応するサイズまでファイルが 0 でパディングされるか、ランダムなコンテンツが追加されることがあります。


以上がPython ファイルの読み取りおよび書き込み方法についての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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