はじめに
ファイル処理はプログラミングの不可欠な部分です。 Pythonでのファイル処理は、ファイルの作成、オープン、クローズなどの組み込みメソッドによって簡素化されています。
ファイルが開いている間、Pythonではさらに、情報の読み取り、書き込み、追加など、さまざまなファイル操作を実行できます。
この記事では、Pythonでファイルを操作する方法について説明します。

前提条件
- Python3をインストールしてセットアップします。
- コードを作成するためのIDEまたはコードエディタ。
- コードを実行する(またはIDEで直接実行する)ための端末へのアクセス。
- 例のテキストファイル。
Pythonでファイルを開く
open()
Pythonメソッドは主要なファイル処理関数です。基本的な構文は次のとおりです。
file_object = open('file_name', 'mode')
open()
関数は、ファイル処理のために2つの基本パラメーターを取ります。
1. file_name
ファイル拡張子を含み、ファイルが現在の作業ディレクトリにあると想定します。ファイルの場所が他の場所にある場合は、絶対パスまたは相対パスを指定します。
2.mode
ファイルを開く方法を定義するオプションのパラメータです。次の表に、考えられるさまざまなオプションの概要を示します。
モード | 説明 |
---|---|
'r' | ファイルから読み取り、ファイルが存在しない場合はエラーを返します(デフォルト 。 |
'w' | ファイルに書き込み、ファイルが存在しない場合はファイルを作成するか、既存のファイルを上書きします。 |
'x' | ファイルがすでに存在する場合に失敗する排他的作成。 |
'a' | ファイルに追加し、ファイルが存在しない場合、または既存のファイルを上書きする場合は、ファイルを作成します。 |
'b' | バイナリモード。このモードは、画像などの非テキストファイルに使用します。 |
't' | テキストモード。テキストファイルにのみ使用します(デフォルト 。 |
'+' | 読み取りメソッドと書き込みメソッドをアクティブにします。 |
モードには、create( x
が1つだけ含まれている必要があります )/ read( r
)/ write( w
)/ append( a
)メソッド、最大1つの +
。モードを省略すると、デフォルトで 'rt'
テキストファイルを読むため。
以下は、呼び出されたときに各モードがどのように動作するかを説明する表です。
動作 | モード |
---|---|
読む | r 、 r+ 、 w+ 、 a+ 、 x+ |
書き込み | r+ 、 w 、 w+ 、 a 、 a+ 、 x+ |
作成 | w 、 w+ 、 a 、 a+ 、 x 、 x+ |
ポインター位置の開始 | r 、 r+ 、 w 、 w+ 、 x 、 x+ |
ポインタ位置の終了 | a 、 a+ |
切り捨て(内容をクリア) | w 、 w+ |
存在する必要があります | r 、 r+ |
存在してはならない | x 、 x+ |
読み取りモード
Pythonの読み取りモードでは、既存のファイルを読み取り用に開き、ファイルの先頭にポインターを置きます。
Pythonでテキストファイルを読み取るには、 open()
を使用してファイルを読み込みます 機能:
f = open("<file name>")
モードはデフォルトでテキストを読み取ります( 'rt'
)。したがって、次の方法はデフォルトと同等です。
f = open("<file name>", "rt")
バイナリモードでファイルを読み取るには、次を使用します:
f = open("<file name>", "rb")
+
を追加します 読み取りおよび書き込みモードでファイルを開くには:
f = open("<file name>", "r+") # Textual read and write
f = open("<file name>", "rt+") # Same as above
f = open("<file name>", "rb+") # Binary read and write
いずれの場合も、関数はファイルオブジェクトを返し、特性は選択したモードによって異なります。
書き込みモード
書き込みモードでは、コンテンツを書き込むためのファイルが作成され、ポインタが先頭に配置されます。ファイルが存在する場合は、既存の情報をすべて切り捨て(クリア)します。
警告: 書き込みモードでは、既存のコンテンツがすぐに削除されます 。誤って情報を上書きする前に、ファイルが存在するかどうかを確認してください。
情報を書き込むためにファイルを開くには、次を使用します:
f = open("<file name>", "w")
デフォルトのモードはテキストであるため、次の行はデフォルトと同等です。
f = open("<file name>", "wt")
バイナリモードで書き込むには、次のコマンドでファイルを開きます。
f = open("<file name>", "wb")
+
を追加します ファイルの読み取りを許可するには:
f = open("<file name>", "w+") # Textual write and read
f = open("<file name>", "wt+") # Same as above
f = open("<file name>", "wb+") # Binary write and read
open()
関数は、選択したモードによって詳細が異なるファイルオブジェクトを返します。
追加モード
追加モードは、既存のファイルに情報を追加し、最後にポインターを配置します。ファイルが存在しない場合は、追加モードでファイルが作成されます。
次のいずれかの行を使用して、ファイルを追加モードで開きます。
f = open("<file name>", "a") # Text append
f = open("<file name>", "at") # Same as above
f = open("<file name>", "ab") # Binary append
+
を追加します 読み取り機能を含めるために署名します。
作成モード
作成モード(排他的作成とも呼ばれます)は、ファイルが存在しない場合にのみファイルを作成し、ファイルの先頭にポインターを置きます。
次のいずれかの行を使用して、作成モードでファイルを開きます。
f = open("<file name>", "x") # Text create
f = open("<file name>", "xt") # Same as above
f = open("<file name>", "xb") # Binary create
+
を追加します モードへのサインには、上記の行のいずれかへの読み取り機能が含まれます。
Pythonでファイルを読み取る
ファイルをオブジェクトにインポートした後、Pythonはコンテンツを読み取るための多数のメソッドを提供します。
read()
を使用します ファイルオブジェクトのメソッドを実行し、結果を出力します。例:
f = open("file.txt")
print(f.read(),end="")

コードはテキストファイルの内容を出力します。
ファイルの一部を読む
read()
に番号を入力します 指定された文字数のみを読み取る関数:
f = open("file.txt")
print(f.read(5))

出力には、ファイルの最初の5文字が出力されます。
または、 readline()
を使用します ファイルの最初の行のみを印刷する方法:
f = open("file.txt")
print(f.readline())

readline()
に整数を追加します 最初の行を超えずに指定された文字数を印刷する関数。
行の読み取り
行を読み取り、ファイルの内容を反復処理するには、 for
を使用します ループ:
f = open("file.txt")
for line in f:
print(line, end="")

または、 readlines()
を使用します ファイルオブジェクトのメソッド:
f = open("file.txt")
print(f.readlines())

この関数は、ファイルストリームから行のリストを返します。
readlines()
に整数を追加します 行数を制御する関数。例:
f = open("file.txt")
print(f.readlines(15))

整数は文字番号を表し、関数は前の行とともに文字が終了する行を返します。
ファイルを閉じる
close()
を呼び出すまで、ファイルは開いたままになります 働き。予期しないファイルの動作や破損したファイルを回避するために、使用されなくなったファイルを閉じることをお勧めします。
ファイルを閉じるには、 close()
を実行します ファイルオブジェクトのメソッド:
f.close()
ファイルを確実に閉じる別の方法は、 with
を使用することです。 声明。例:
with open("<file name>"):
file_contents = f.read()
# Additional code here
with
ステートメントはファイルを自動的に閉じます。
Pythonでのファイルの削除
Pythonでファイルを削除するには、オペレーティングシステムとの通信を確立する必要があります。 os
をインポートします ライブラリを作成し、次のファイルを削除します:
import os
os.remove("file.txt")

ファイルは使用できなくなりました。ファイルが存在しない場合、Pythonはエラーをスローします。
Pythonファイルメソッド
Pythonは、ファイルオブジェクトを操作するときに、他のさまざまな機能を提供します。以下は、利用可能なすべてのプロセスとその機能の概要を示す表です。
メソッド | 説明 |
---|---|
close() | ファイルオブジェクトをフラッシュして閉じます。 |
detach() | バッファをテキストストリームから分離し、バッファを返します。 |
fileno() | 可能な場合はファイルの記述子を返します。 |
flush() | 書き込みバッファをフラッシュします。読み取り専用オブジェクトには使用できません。 |
isatty() | ファイルストリームがインタラクティブかどうかを確認します。 |
read(<int>) | 読み取り<int> 最大で文字数。 |
readable() | オブジェクトが読み取り可能かどうかを確認します。 |
readline(<int>) | オブジェクトから改行またはファイルの終わりまで読み取ります。 |
readlines(<int>) | ファイルオブジェクトから行のリストを返します。ここで、 <int> おおよその文字番号です。 |
seek(<offset>, <position>) | ポインタの位置を<offset> に変更します <position> に関連する 。 |
seekable() | ファイルオブジェクトがランダムアクセスをサポートしているかどうかを確認します。 |
tell() | 現在のストリーム位置を出力します。 |
truncate(<byte>) | ファイルストリームのサイズを<bytes> に変更します (または記載されていない場合は現在の位置)そしてサイズを返します。 |
write(<string>) | 書き込み<string> ファイルオブジェクトに移動し、書き込まれた文字数を返します。 |
writable() | ファイルオブジェクトが書き込みを許可しているかどうかを確認します。 |
writelines(<list>) | <list> を書き込みます 行区切り記号なしでストリームに行を追加します。 |