Python3でプレーンテキストファイルを処理する方法
序章
Pythonは、データを処理するための優れたツールです。 作成するプログラムには、データの読み取り、書き込み、または操作が含まれる可能性があります。 このため、さまざまな種類のデータを格納するさまざまなファイル形式を処理する方法を知っておくと特に役立ちます。
たとえば、ユーザーのリストのアクセス制御をチェックするPythonプログラムについて考えてみます。 ユーザーのリストは、テキストファイルに保存および保存される可能性があります。 おそらくあなたはテキストを扱っていませんが、代わりに財務分析を行うプログラムを持っています。 数値計算を行うには、保存したスプレッドシートからそれらの数値を入力する必要があります。 アプリケーションに関係なく、データの入力または出力が含まれることはほぼ確実です。
このチュートリアルでは、Pythonが処理できる形式の種類のいくつかについて簡単に説明します。 ファイル形式の簡単な紹介の後、Python 3でテキストファイルを開いたり、読んだり、書いたりする方法を説明します。
このチュートリアルを終了すると、Pythonで任意のテキストファイルを処理できるようになります。
前提条件
このチュートリアルでは、Python 3をインストールし、コンピューターにローカルプログラミング環境をセットアップする必要があります。 そうでない場合は、オペレーティングシステムの適切なインストールおよびセットアップガイドに従ってセットアップできます。
バックグラウンド
Pythonは非常に柔軟で、次のようなさまざまなファイル形式を比較的簡単に処理できます。
ファイルタイプ | 説明 |
---|---|
TXT | プレーンテキストファイルは、文字(または文字列)のみを表し、構造化メタデータを除外するデータを格納します |
CSV | コンマ区切り値ファイルは、コンマ(または他の区切り文字)を使用して保存されたデータを構造化し、データを表形式で保存できるようにします |
HTML | ハイパーテキストマークアップ言語ファイルは構造化データを保存し、ほとんどのWebサイトで一般的に使用されています |
JSON | JavaScript Object Notationはシンプルで効率的な形式であり、データの保存と転送に最も一般的に使用される形式の1つです。 |
このチュートリアルでは、txtファイル形式に焦点を当てます。
ステップ1—テキストファイルを作成する
Pythonでの作業を開始する前に、作業するファイルがあることを確認する必要があります。 これを行うには、テキストエディタを開いて、新しいtxtファイルを作成します。これをdays.txt
と呼びます。
新しいファイルに、数行のテキストを入力します。 この例では、曜日をリストしてみましょう。
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
次に、ファイルを保存して、どこに置いたかを確認します。 この例では、ユーザー sammy がファイルをここに保存しました:/users/sammy/days.txt
。 これは、Pythonでファイルを開く後の手順で非常に重要になります。
処理するtxtファイルができたので、コードを開始できます。
ステップ2—ファイルを開く
プログラムを作成する前に、Pythonプログラミングファイルを作成する必要があるため、テキストエディタでファイルfiles.py
を作成します。 簡単にするために、days.txt
ファイルと同じディレクトリ/users/sammy/
に保存します。
Pythonでファイルを開くには、まず、ディスク上のファイルをPythonの変数に関連付ける方法が必要です。 このプロセスは、ファイルを開くと呼ばれます。 まず、ファイルがどこにあるかをPythonに伝えます。 ファイルの場所は、多くの場合、ファイルpathと呼ばれます。 Pythonがファイルを開くには、パスが必要です。 days.txt
ファイルへのパスは/users/sammy/days.txt
です。 Pythonでは、この情報を格納するための文字列変数を作成します。 files.py
スクリプトでは、path
変数を作成し、その変数をdays.txtパスに設定します。
path = '/users/sammy/days.txt'
次に、Pythonのopen()
関数を使用して、days.txt
ファイルを開きます。 open()
関数は、最初の引数としてファイルパスを必要とします。 この関数では、他の多くのパラメーターも使用できます。 ただし、最も重要なのはオプションのmodeパラメーターです。 Modeは、ファイルが開かれるモードを指定するオプションの文字列です。 選択するモードは、ファイルで何をしたいかによって異なります。 モードオプションの一部を次に示します。
'r'
:読み取りに使用'w'
:書き込みに使用'x'
:新しいファイルの作成と書き込みに使用します'a'
:ファイルへの追加に使用'r+'
:同じファイルの読み取りと書き込みに使用します
この例では、ファイルから読み取るだけなので、'r'
モードを使用します。 open()
関数を使用して、days.txt
ファイルを開き、変数days_file
に割り当てます。
days_file = open(path,'r')
ファイルを開いたら、ファイルから読み取ることができます。これは次のステップで行います。
ステップ3—ファイルの読み取り
ファイルが開かれたので、ファイルを操作できるようになりました(つまり、 それに割り当てた変数を介して)を読み取ります。 Pythonは、ファイルから情報を読み取るための3つの関連する操作を提供します。 3つの操作すべてを例として使用する方法を示し、それらがどのように機能するかを理解するために試すことができます。
最初の操作<file>.read()
は、ファイルの内容全体を単一の文字列として返します。
days_file.read()
Output'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
2番目の操作<file>.readline()
は、ファイルの次の行を返し、次の改行文字までのテキストを返します。 より簡単に言えば、この操作はファイルを1行ずつ読み取ります。
days_file.readline()
Output'Monday\n'
したがって、readline操作で行を読み取ると、次の行に渡されます。 したがって、この操作を再度呼び出すと、次のようにファイル内の次の行が返されます。
days_file.readline()
Output'Tuesday\n'
最後の操作<file>.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番目の操作で空の文字列が返されます。 したがって、ファイルから読み取りたい場合は、最初に新しいファイル変数を開く必要があります。 ファイルから読み取ったので、新しいファイルに書き込む方法を学びましょう。
ステップ4—ファイルを書く
このステップでは、タイトル曜日の後に曜日を含む新しいファイルを作成します。 まず、title
変数を作成しましょう。
title = 'Days of the Week\n'
また、曜日を文字列変数に格納する必要があります。これをdays
と呼びます。 わかりやすくするために、上記の手順のコードを含めます。 ファイルを読み取りモードで開き、ファイルを読み取り、読み取り操作から返された出力を新しい変数days
に保存します。
path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()
タイトルと曜日の変数ができたので、新しいファイルへの書き込みを開始できます。 まず、ファイルの場所を指定する必要があります。 ここでも、ディレクトリ/users/sammy/
を使用します。 作成する新しいファイルを指定する必要があります。 したがって、実際のパスは/users/sammy/new_days.txt
になります。 new_path
変数で位置情報を提供します。 次に、'w'
モードを指定して、open()
関数を使用して、新しいファイルを書き込みモードで開きます。
new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')
重要なのは、ファイルを開く前にnew_days.txtがすでに存在していた場合、その古い内容が破棄されてしまうため、'w'
モードを使用するときは注意してください。
新しいファイルが開かれると、書き込み操作<file>.write()
を使用して、データをファイルに入れることができます。 書き込み操作は、文字列である必要がある単一のパラメーターを受け取り、その文字列をファイルに書き込みます。 ファイルで改行を開始する場合は、改行文字を明示的に指定する必要があります。 まず、ファイルにタイトルを書き込み、次に曜日を書き込みます。 また、私たちが書いているもののいくつかの印刷ステートメントを追加しましょう。これは、スクリプトの進行状況を追跡するための良い習慣です。
new_days.write(title)
print(title)
new_days.write(days)
print(days)
最後に、ファイルが完成したら、必ずファイルを閉じる必要があります。 これを最後のステップで示します。
ステップ5—ファイルを閉じる
ファイルを閉じると、ディスク上のファイルとファイル変数の間の接続が確実に終了します。 ファイルを閉じると、他のプログラムがファイルにアクセスできるようになり、データが安全に保たれます。 したがって、必ずファイルを閉じてください。 それでは、<file>.close()
関数を使用してすべてのファイルを閉じましょう。
days_file.close()
new_days.close()
これでPythonでのファイルの処理が終了し、コードの確認に進むことができます。
ステップ6—コードを確認する
コードを実行する前に、すべてが良好に見えることを確認しましょう。 最終的な製品は次のようになります。
path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()
new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')
title = 'Days of the Week\n'
new_days.write(title)
print(title)
new_days.write(days)
print(days)
days_file.close()
new_days.close()
コードを保存したら、ターミナルを開いて、次のように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で独自のデータを引き続き操作できます。