ホームページ >バックエンド開発 >Python チュートリアル >ファイルおよびファイル オブジェクトを読み書きするための Python メソッド

ファイルおよびファイル オブジェクトを読み書きするための Python メソッド

高洛峰
高洛峰オリジナル
2017-02-23 11:20:261158ブラウズ

1.open

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

file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
注: open ステートメントは try ブロックに入れることはできません。ファイルがオープンされるときに例外が発生すると、ファイル オブジェクト file_object は close() メソッドを実行できません。

2. ファイルを読み取る

テキスト ファイルを読み取る
input = open('data', 'r')
#2 番目のパラメータのデフォルトは r
input = open('data')

バイナリ ファイルを読み取る
input = open('data', 'rb')

すべてのコンテンツを読み取る
file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )

読み取り固定bytes
file_object = open('abinfile', 'rb')
try:
while True:
chunk = file_object.read(100) if not chunk:
Break do_something_with(chunk)
finally :
file_object .close( )

各行を読み取る

list_of_all_the_lines = file_object.readlines( )

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

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) )

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

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

Python では、組み込みの File オブジェクトが、このようなことを実現するための readlines(sizehint) 関数を直接提供します。次のコードを例に挙げます。

file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() -position

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

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

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

file() 関数は、ファイル オブジェクトを作成するために使用されます。これには、open() というエイリアスがあります。どちらのほうがわかりやすいかもしれません。一部の機能は組み込み関数です。そのパラメータを見てみましょう。そのパラメータはすべて文字列の形式で渡されます。 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

file:

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

•F . readline([size])

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

•F.readlines([size])

# ファイルの各行を扱いますリストのメンバーとして、このリストを返します。実際、これはループ内で 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()

#ファイル操作の現在位置を返しますファイルのマークを元に 先頭が原点

•F.next()

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

•F.seek(offset[,whence])

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

•F.truncate([size])

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

Python でファイルとファイル オブジェクトを読み書きする上記の方法 (推奨) は、エディターによって共有されるすべての内容ですので、参考にしていただければ幸いです。また、PHP 中国語 Web サイトをサポートしていただければ幸いです。

Python のファイルおよびファイル オブジェクトの読み取りおよび書き込み方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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