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

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

Mar 17, 2017 pm 05:14 PM
python

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Apr 01, 2025 pm 04:03 PM

Scapy Crawlerを使用する場合、パイプラインの永続的なストレージファイルを書くことができない理由は?ディスカッションデータクローラーにScapy Crawlerを使用することを学ぶとき、あなたはしばしば...

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? Apr 01, 2025 pm 04:09 PM

Python Process Poolは、クライアントが立ち往生する原因となる同時TCP要求を処理します。ネットワークプログラミングにPythonを使用する場合、同時のTCP要求を効率的に処理することが重要です。 ...

Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Apr 01, 2025 pm 04:15 PM

python functools.partialオブジェクトのpython functools.partialを使用してPythonを使用する視聴方法を深く探索します。

Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Apr 01, 2025 pm 05:24 PM

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Apr 01, 2025 pm 06:27 PM

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...

See all articles