Python3でプレーンテキストファイルを処理する方法
序章
Pythonは、データを処理するための優れたツールです。 プログラミングで最も一般的なタスクのいくつかは、データの読み取り、書き込み、または操作を含みます。 このため、さまざまなタイプのデータを格納するさまざまなファイル形式を処理する方法を知っておくと特に役立ちます。
たとえば、ユーザーのリストのアクセス制御をチェックするPythonプログラムについて考えてみます。 ユーザーのリストはテキストファイルとして保存される場合があり、アクセスを確認したり、アクセス許可を変更したりできます。 Pythonでは、ファイルを開いたり、読み取ったり、書き込んだり、閉じたりできると、このようなタスクを処理するのに役立ちます。
このチュートリアルでは、Pythonが処理できるファイル形式のいくつかについて簡単に説明します。 それらを簡単に紹介した後、Python 3でテキストファイルを開いたり、読んだり、書いたりする方法を学びます。 終了すると、Pythonで任意のプレーンテキストファイルを処理できるようになります。
前提条件
このチュートリアルでは、Python 3をインストールし、コンピューターにローカルプログラミング環境をセットアップする必要があります。 そうでない場合は、オペレーティングシステムの適切なインストールおよびセットアップガイドに従ってセットアップできます。
バックグラウンド
Pythonは非常に柔軟性があり、次のようなさまざまなファイル形式を簡単に処理できます。
ファイルタイプ | 説明 |
---|---|
プレーンテキスト | プレーンテキストファイルは、文字(または文字列)のみを表し、構造化メタデータを除外するデータを格納します |
CSV | コンマ区切り値ファイルは、コンマ(または他の区切り文字)を使用して保存されたデータを構造化し、データを表形式で保存できるようにします |
HTML | ハイパーテキストマークアップ言語ファイルは、ブラウザで表示することを目的とした構造化データを格納し、Webサイトで一般的に使用されます |
JSON | JavaScript Object Notationはシンプルで効率的な形式であり、構造化データを保存および転送するために最も一般的に使用される形式の1つです。 |
このチュートリアルでは、プレーンテキストファイルの操作に焦点を当てます。
ステップ1—テキストファイルを作成する
Pythonでの作業を開始する前に、作業するファイルがあることを確認する必要があります。 これを行うには、コードエディタを開き、という新しいプレーンテキストファイルを作成します。 days.txt
.
新しいファイルに、曜日をリストした数行のテキストを入力します。
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
次に、ファイルを保存し、その場所をメモします。 この例では、ユーザー sammy が、ファイルを次のように保存しました。 /home/sammy/days.txt
. これは、Pythonでファイルを開く後の手順で非常に重要になります。
処理するファイルができたので、コーディングを開始できます。
ステップ2—ファイルを開く
コードエディタで、新しいPythonファイルを作成し、名前を付けます files.py
.
Pythonでファイルを開くには、まず、ディスク上のファイルをPythonの変数に関連付ける方法が必要です。 このプロセスはファイルを開くと呼ばれ、変数はファイルハンドルと呼ばれます。 まず、ファイルがどこにあるかをPythonに伝えます。 ファイルの場所は、多くの場合、ファイル path と呼ばれます— /home/sammy/days.txt
この例では。 このパス情報を格納する変数を作成します。
path = '/home/sammy/days.txt'
これで、Pythonを使用できます open()
私たちを開くための機能 days.txt
ファイル。 The open()
関数は、最初の引数としてファイルパスを必要とします。 この関数は、他の多くのパラメーターも受け入れます。 ただし、最も重要なのはオプションです mode
パラメータ。 これは、ファイルが開かれるモードを指定するオプションの文字列です。 選択するモードは、ファイルで何をしたいかによって異なります。 使用可能なモードのいくつかを次に示します。
'r'
:ファイルからの読み取りに使用'w'
:ファイルへの書き込みに使用'a'
:ファイルへの追加に使用'r+'
:同じファイルの読み取りと書き込みに使用
この例では、ファイルから読み取るだけなので、 'r'
モード。 使用 open()
開く機能 days.txt
ファイルを作成し、結果のファイルハンドルを変数に割り当てます days_file
.
days_file = open(path, 'r')
ファイルを開いたので、次のステップでその内容を読みます。
ステップ3—ファイルの読み取り
ファイルが開かれたので、ファイルを操作できるようになりました(つまり、 割り当てられた変数を介して)を読み取ります。 Pythonは、ファイルから情報を読み取るための3つの関連する操作を提供します。 それぞれがどのように機能するかを理解するために少し時間を取ってみましょう。
使用する read
最初の操作 read()
ファイルの内容全体を単一の文字列として返します。 例えば:
days_file.read()
結果は次のようになります。
Output'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
注: \n
上記の文字列は改行文字を表します。 Pythonと直接対話する場合(単に実行する場合のように) python
コマンドラインから)、使用します \n
改行を表示します。 独自の文字列を作成するときに、これを使用して改行を表すこともできます。
使用する readline
2番目の操作 readline()
ファイルの次の行を返し、次の改行文字までのテキストを返します。 より簡単に言えば、この操作はファイルを1行ずつ読み取ります。
days_file.readline()
結果は次のようになります。
Output'Monday\n'
あなたがで行を読んだら readline
操作ファイルが読み取られる現在のポイントは、次の行に移動します。 この操作を再度呼び出すと、次のようにファイル内の次の行が返されます。
days_file.readline()
Output'Tuesday\n'
使用する readlines
最後の操作、 readlines()
ファイル内の行のリストを返します。リストの各項目は1行を表します。
days_file.readlines()
Output['Monday\n', 'Tuesday\n', 'Wednesday\n', 'Thursday\n', 'Friday\n', 'Saturday\n', 'Sunday\n']
ファイルから読み取る場合は、いずれかの読み取り操作を使用してファイルを読み取ると、再度読み取ることができないことに注意してください。 たとえば、最初に実行する場合 days_file.read()
に続く days_file.readlines()
2番目の操作は、空の文字列を返します。 したがって、ファイルから読み取りたい場合は、最初に新しいファイル変数を開くか、 seek()
このチュートリアルの範囲を超えているメソッド。 詳細を知りたい場合は、Pythonにこれらのメソッドに関する優れたドキュメントがあります。
ファイルから読み取ったので、新しいファイルに書き込む方法を学びましょう。
ステップ4—ファイルを書く
このステップでは、タイトル曜日の後に最初のファイルの内容を含む新しいファイルを作成します。 まず、作成します title
変数。
title = 'Days of the Week\n'
また、曜日を変数に格納する必要があります。これを変数と呼びます。 days
. このコードは、ファイルを読み取りモードで開き、ファイルを読み取り、読み取り操作から返された出力を新しい変数に格納します days
. わかりやすくするために、ステップ2のコードが含まれています。
path = '/home/sammy/days.txt'
days_file = open(path, 'r')
days = days_file.read()
タイトルと曜日の変数ができたので、新しいファイルへの書き込みを開始できます。 まず、ファイルの場所を指定します。 ここでも、ディレクトリを使用します /home/sammy/
、だから私たちの道は /home/sammy/new_days.txt
. 次に、を使用して、書き込みモードで新しいファイルを開くことができます。 open()
で機能する 'w'
指定されたモード。
new_path = '/home/sammy/new_days.txt'
new_days = open(new_path, 'w')
注:次の場合に注意することが重要です。 new_days.txt
ファイルを開く前にすでに存在している場合、その古い内容は上書きされますので、使用するときは注意してください 'w'
モード!
新しいファイルを開くと、を使用してデータを追加できます write()
方法。 このメソッドは単一の文字列パラメーターを受け取り、そのデータをファイルに書き込みます。 ファイルで新しい行を開始する場合は、改行文字を明示的に指定する必要があります。 \n
、割り当てたときに含まれていました 'Days of the Week\n'
に title
変数。
ファイルにタイトルを書き込み、その後に曜日を書き込みます。 いくつか追加すると役立つ場合があります print
スクリプトの進行状況を追跡するためによく使用される、ファイルに書き込んでいる内容のステートメント。
new_days.write(title)
print(title)
new_days.write(days)
print(days)
最後に、ファイルを使い終わったら、ファイルを閉じることが重要です。
ステップ5—ファイルを閉じる
ファイルを閉じると、ディスク上のファイルとファイルハンドル間の接続が確実に終了します。 ファイルを閉じると、他のプログラムがファイルにアクセスできるようになり、データが安全に保たれます。 使用していない場合 with
ステップ6で説明されているステートメントでは、必ずファイルを閉じてください。 この例では、を使用してすべてのファイルを閉じます close()
方法。
days_file.close()
new_days.close()
スクリプトがファイルの使用を終了したので、スクリプトはファイルハンドルを使用してファイルハンドルを解放します。 close()
方法。
ステップ6—使用 with
ステートメント(オプション)
Pythonでファイルを操作するための推奨される方法( Pythonic の方法と呼ばれることが多い)は、次の言語の機能を使用することです。 with
ステートメント。 これらのステートメントは、作業が行われるコンテキストを設定するための簡単な方法であり、そのコンテキストが終了すると、一般的なエラーを防ぐために最終的な詳細が自動的に処理されます。 ファイルを操作する場合、 with
ステートメントは自動的にファイルを閉じるので、タスクが終了した後、これらのファイルハンドルが長引くことはありません。
関数定義などのPythonの他のブロックと同様に、 if
ステートメント、またはループ、 with
ステートメントは、単純なステートメントの後に :
インデントされたコードのブロック。 ファイルを開いてその内容を出力するコードの例を次に示します。
with open('/home/sammy/days.txt', 'r') as days_file:
days = days_file.read()
print(days)
このコードが何をするかを段階的に見ていきましょう。 以前と同様に、Pythonの組み込みを使用してファイルを開きます open()
関数、ファイルパスとモードパラメータを渡します。 ただし、 with
結果のファイルハンドルをを使用して変数に割り当てるのではなく、ステートメント =
、を使用して割り当てます as
キーワード。 これは完全な一部です with
ステートメントの構文:
with action as result:
. . .
後に :
、次の行に移動してコードをインデントします。これは、Pythonが機能のブロックを編成する方法です。 以前と同様に、ファイルハンドルにアクセスできます。 days_file
変数なので、 read()
すべてのコンテンツを取得するメソッドと print()
彼ら。
ないことに注意してください close()
ただし、メソッドが呼び出されました。 これは、コードがこのブロックを離れるとすぐに(つまり、コードの次の行がインデントされないか、ファイルが終了するとすぐに)、 with
ステートメントのコンテキストは、これらのファイルを自動的に閉じることを認識しています。 これの利点は、毎回ファイルを閉じることを覚えておく必要がないことだけでなく、特にそのファイルを処理するためのすべてのロジックがそのブロック内で視覚的および論理的に異なることです。 この構造は、コードをクリーンで読みやすく保つのに役立ちます。
これを念頭に置いて、使用する前にコードフォームを書き直してみましょう。 with
声明:
with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
days = days_file.read()
new_days.write(title)
new_days.write(days)
print(title)
print(days)
これで、コードははるかに整理されました。 以前と同じように、いくつかの変数を定義することから始めます。2つのファイルのパスと、新しいファイルの先頭に使用するタイトルです。 その後、私たちは with
ステートメント、2つのファイルを開き、それらの接続を適切な名前の変数に格納します。 以前と同じように、 days_file
、次にタイトルとそれらの内容を new_days
. 最後に、次の値を出力するために、コードのインデントを解除してブロックを終了します。 title
と days
私たちが読んだこと。
注: Pythonの他のいくつかのブロックとは異なり、変数は with
ブロックはその範囲外で利用できます。
使用したい場合もありますが close()
前に説明した方法であり、それがどのように機能するかを知ることが重要です。最も一般的に使用するのは with
Pythonでファイルを操作するときのステートメント。
ステップ7—コードを確認する
コードを実行する前に、すべてが正しいように見えることを確認することをお勧めします。 最終的な製品は次のようになります。
path = '/home/sammy/days.txt'
new_path = '/home/sammy/new_days.txt'
title = 'Days of the week\n'
with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
days = days_file.read()
new_days.write(title)
new_days.write(days)
print(title)
print(days)
コードを保存したら、ターミナルを開いて、次のようにPythonスクリプトを実行します。
- python files.py
出力は次のようになります。
OutputDays of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
ここで、新しいファイルを開いてコードが完全に機能することを再確認します(new_days.txt
). すべてがうまくいけば、これが含まれているはずです:
Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
結論
このチュートリアルでは、Python3でプレーンテキストファイルを処理および操作する方法について説明しました。 これで、Pythonでファイルを開いたり、読み取ったり、書き込んだり、閉じたりすることができ、Pythonで独自のデータを引き続き操作できます。 Pythonは、入力と出力を操作するときに他の多くの便利なメソッドを提供し、詳細についてはドキュメントも提供します。