Python でファイルを読み書きする方法
最も単純なプログラムを超えて Python 言語でプログラミングする場合、通常、プログラム自体の外部に存在するファイルからデータを読み書きする必要があります。 Python は、コア言語の一部である標準関数を使用して、特定のファイルにアクセスして変更するための簡単なメカニズムを提供します。
Python でファイルを開く
ステップ 1
利用方針を決定します。ファイルを開く前に、ファイルの読み取りまたは書き込みが必要かどうかを知る必要があります。本当に必要なアクセス許可を持つファイルのみを開き、読み取りのみが必要な場合は読み取り/書き込みモードでファイルを開かないでください。これにより、書き込みを行うべきではないファイルへの偶発的な書き込みを防ぐことができます。
ステップ 2
ASCII モードとバイナリ モードのどちらを使用するかを決定します。テキストを読む場合は、ASCII モードを使用することをお勧めします。バイナリ データを読み取る場合は、バイナリ モードを使用します。このモードは、行末をオペレーティング システムが使用するモードに変換します。
ステップ 3
モード文字列を作成します。最初の文字は読み取りモードまたは書き込みモードです。バイナリ モードで開きたい場合は、文字列の末尾に "b" を追加します。たとえば、ASCII モードで読み取る場合、モード文字列は "r" になり、バイナリ モードで書き込む場合、モード文字列は "wb" になります。
ステップ 4
関数 open を使用してファイルを開きます。結果のファイル オブジェクトを変数に格納します。例:
f =open("/filename/goes/here", "r")
Python でのファイルからの読み取り
ステップ 1
すべての行を繰り返します。ファイル オブジェクトは、"for" ループを使用してコレクションとして使用できます。 for ステートメントを使用して、ファイル内のすべての行を反復処理できます (一般的なアクション)。
for line in f:print line
ステップ 2
ファイル内の特定のポイントをシークします。ファイルは常に順番に読み取られるとは限らないため、ファイルから読み取る前に、ファイル内の特定のポイントをシークする必要があることがよくあります。これは、ファイル オブジェクトの seek メソッドで実行できます。
100 バイト目までシークする f.seek(100)
現在のバイトから 10 バイトをシークします f.seek(10, 1)
ステップ 3
ファイルからバイナリ データを読み取ります。ファイル オブジェクトの read メソッドを使用すると、ファイルから任意のバイト数を読み取ることができます。
ファイルから 16 バイトを読み取る buf =f.read(16)
Python ファイルへの書き込み
ステップ 1
データをファイルに書き込みます。ファイルが書き込みモードで開かれている場合は、ASCII データまたはバイナリ データを書き込むことができます。これは、ファイル オブジェクトの書き込みメソッドで行われます。
f.write("これはテキストです")
ステップ 2
オブジェクトをファイルに書き込みます。オブジェクトの内部状態を保存する必要がある場合は、それを「ピクル」できます。オブジェクトをピクルするには、まず pickle モジュールをインポートする必要があります。その後、pickle.dump 関数を使用して、ほぼすべてのオブジェクトをピクルできます。
pickle pickle.dump(any_object,f) をインポート
ステップ 3
ファイルを閉じます。書き込みが完了したら、ファイルを閉じる必要があります。これにより、すべてのバッファがフラッシュされ、ファイルがロックされず、他のプログラムがアクセスできるようになります。これは、ファイル オブジェクトの close メソッドで行われます。
f.close()