Python 3でプレーンテキストファイルを処理する方法

前書き

Pythonは、データを処理するための優れたツールです。 作成するプログラムには、データの読み取り、書き込み、または操作が含まれる可能性があります。 このため、さまざまな種類のデータを保存するさまざまなファイル形式の処理方法を知ることは特に役立ちます。

たとえば、ユーザーのlistにアクセス制御をチェックするPythonプログラムについて考えてみます。 ユーザーのリストは、テキストファイルに保存および保存される可能性があります。 おそらく、あなたはテキストを使って作業しているのではなく、代わりに財務分析を行うプログラムを持っているでしょう。 数値計算を行うには、保存されたスプレッドシートからそれらの数値を入力する必要があります。 アプリケーションに関係なく、データの入力または出力が含まれることはほぼ保証されています。

このチュートリアルでは、Pythonで処理できる形式タイプの一部について簡単に説明します。 ファイル形式の簡単な紹介の後、Python 3でテキストファイルを開く、読み取る、書き込む方法を説明します。

このチュートリアルを終えると、Pythonでテキストファイルを処理できるようになります。

前提条件

このチュートリアルでは、Python 3をインストールし、コンピューターにローカルプログラミング環境をセットアップする必要があります。 そうでない場合は、ご使​​用のオペレーティングシステム用の適切なインストールおよびセットアップガイドに従ってセットアップすることができます。

バックグラウンド

Pythonは非常に優れており、比較的簡単に、次のようなさまざまなファイル形式を処理できます。

ファイルタイプ 説明

txt

プレーンテキストファイルには、文字(またはstrings)のみを表し、構造化メタデータを除外するデータが格納されます

CSV

コンマ区切り値ファイルは、コンマ(または他の区切り文字)を使用して保存データを構造化し、データを表形式で保存できるようにします。

HTML

ハイパーテキストマークアップ言語ファイルは構造化データを格納し、ほとんどのWebサイトで一般的に使用されています

JSON

JavaScript Object Notationはシンプルで効率的な形式であり、データの保存と転送に最も一般的に使用される形式の1つです。

このチュートリアルでは、txtファイル形式に焦点を当てます。

[[step-1 -—- creating-a-text-file]] ==ステップ1—テキストファイルの作成

Pythonで作業を始める前に、作業するファイルがあることを確認する必要があります。 これを行うには、テキストエディタを開いて、新しいtxtファイルを作成します。これをdays.txtと呼びます。

新しいファイルに、数行のテキストを入力します。 この例では、曜日をリストします。

days.txt

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

次に、ファイルを保存し、どこに置いたかを確認します。 この例では、ユーザーsammyがファイルを/users/sammy/days.txtに保存しました。 これは、Pythonでファイルを開く後の手順で非常に重要になります。

処理するtxtファイルができたので、コードを開始できます!

[[step-2 -—- opening-a-file]] ==ステップ2—ファイルを開く

プログラムを作成する前に、Pythonプログラミングファイルを作成する必要があるため、テキストエディタでファイルfiles.pyを作成します。 簡単にするために、days.txtファイルと同じディレクトリ/users/sammy/に保存します。

Pythonでファイルを開くには、まず、ディスク上のファイルをPythonのvariableに関連付ける方法が必要です。 このプロセスは、openingファイルと呼ばれます。 まず、ファイルの場所をPythonに指示します。 ファイルの場所は、多くの場合、ファイルpathと呼ばれます。 Pythonがファイルを開くには、パスが必要です。 days.txtファイルへのパスは/users/sammy/days.txtです。 Pythonでは、この情報を保存する文字列変数を作成します。 files.pyスクリプトでは、path変数を作成し、変数をdays.txtパスに設定します。

files.py

path = '/users/sammy/days.txt'

次に、Pythonのopen()関数を使用して、days.txtファイルを開きます。 open()関数は、最初の引数としてファイルパスを必要とします。 この関数では、他の多くのパラメーターも使用できます。 ただし、最も重要なのはオプションのmodeパラメータです。 Modeは、ファイルを開くモードを指定するオプションの文字列です。 選択するモードは、ファイルをどのように処理するかによって異なります。 モードオプションの一部を次に示します。

  • 'r':読み取りに使用

  • 'w':書き込みに使用

  • 'x':新しいファイルの作成と書き込みに使用

  • 'a':ファイルへの追加に使用

  • 'r+':同じファイルの読み取りと書き込みに使用

この例では、ファイルから読み取るだけなので、'r'モードを使用します。 open()関数を使用してdays.txtファイルを開き、それを変数days_fileに割り当てます。

files.py

days_file = open(path,'r')

ファイルを開いた後、そのファイルから読み取ることができます。これは次のステップで行います。

[[step-3 -—- reading-a-file]] ==ステップ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']

ファイルから読み取る場合に留意する必要があるのは、読み取り操作の1つを使用してファイルを読み取った後、再度読み取ることはできないということです。 たとえば、最初にdays_file.read()を実行し、次にdays_file.readlines()を実行した場合、2番目の操作は空の文字列を返します。 そのため、ファイルから読み取る場合は、まず新しいファイル変数を開く必要があります。 ファイルから読み取ったので、新しいファイルに書き込む方法を学びましょう。

[[step-4 -—- writing-a-file]] ==ステップ4—ファイルの書き込み

このステップでは、タイトルDays of the Weekとそれに続く曜日を含む新しいファイルを作成します。 まず、title変数を作成しましょう。

files.py

title = 'Days of the Week\n'

また、曜日を文字列変数に格納する必要があります。これをdaysと呼びます。 わかりやすくするために、上記の手順のコードを含めます。 ファイルを読み取りモードで開き、ファイルを読み取り、読み取り操作から返された出力を新しい変数daysに格納します。

files.py

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()関数を使用し、新しいファイルを書き込みモードで開きます。

files.py

new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')

ファイルを開く前にnew_days.txtがすでに存在していた場合、その古い内容は破棄されていることに注意してください。'w'モードを使用するときは注意してください。

新しいファイルが開かれると、書き込み操作<file>.write()を使用してデータをファイルに入れることができます。 書き込み操作は、文字列でなければならない単一のパラメーターを取り、その文字列をファイルに書き込みます。 ファイル内の新しい行を開始する場合は、明示的に改行文字を指定する必要があります。 最初に、ファイルにタイトルを書き込み、続いて曜日を書き込みます。 また、スクリプトの進行状況を追跡するための良い習慣である、私たちが書いているもののいくつかの印刷ステートメントを追加しましょう。

files.py

new_days.write(title)
print(title)

new_days.write(days)
print(days)

最後に、ファイルの作成が完了するたびに、必ずファイルを閉じる必要があります。 これを最終ステップで示します。

[[ステップ-5 ---ファイルを閉じる]] ==ステップ5—ファイルを閉じる

ファイルを閉じると、ディスク上のファイルとファイル変数の間の接続が確実に終了します。 また、ファイルを閉じることにより、他のプログラムがそれらにアクセスできるようになり、データの安全性が確保されます。 そのため、必ずファイルを閉じてください。 それでは、<file>.close()関数を使用してすべてのファイルを閉じましょう。

files.py

days_file.close()
new_days.close()

これで、Pythonでのファイルの処理が終了しました。次に、コードの確認に進みます。

[[step-6 -—- checking-our-code]] ==ステップ6—コードを確認する

コードを実行する前に、すべてが適切に見えることを確認しましょう。 最終製品は次のようになります。

files.py

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)を開いて、コードが完全に機能することを再確認しましょう。 すべてうまくいった場合、新しいファイルを開くと、次のようになります。

new_days.txt

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

ファイルは同じように見えますが、このチュートリアルは正常に完了しました!

結論

このチュートリアルでは、Python 3でプレーンテキストファイルを処理および操作する方法を説明しました。 これで、Pythonでファイルを開いたり、読み込んだり、書き込んだり、閉じたりすることができ、Pythonで独自のデータを操作し続けることができます。