Python ファイルの作成

Python学習【365日チャレンジ!】89日目のマスターU(@Udemy11)です。

昨日で、7セクション目のオブジェクトとクラスを終了し、今日からファイル操作とシステムのセクションに進みます。

これまでは、Pythonファイルに基本的であるクラスやメソッドなどについての記述方法などについて学習してきました。

このセクションでは、テキストファイルの作成からシステムに関することまでを学習する予定です。

個人的に、外部ファイルを書き換えたり、新しいファイルを作成したりするのは、ものすごくハードルが高いと感じていたのですが、これまでの酒井さんのレクチャーと同様にさらっと解説されているので、かなりハードルが下がった気がします。

それではさっそくPython学習をはじめましょう!

昨日の復習

昨日は、いろいろな特殊メソッドの使い方について学習しました。

特殊メソッドは、__init__のように、__で囲んだメソッドで、オブジェクトを生成したあと、特定の処理を呼び出したときに実行されるメソッドです。

代表的なものがこれまでも最も活用していた__init__メソッドで、クラスカらオブジェクトを生成したときに、最初に読み込まれて初期化するメソッドです。

次によく使われるのが、__str__メソッドで、print()が呼び出されたときに実行される特殊メソッドでした。

また、生成したオブジェクトで==が呼び出されたときに、Boolen型を返す__eq__メソッドなどもありました。

特殊メソッドの詳しい内容は、昨日の記事を参考にしてみてください。

それでは、ファイルの作成にすすみましょう!

ファイルの作成

ファイルの作成は、基本、今現在、記述しているPythonファイルと同じ階層にファイルが作成されます。

もし、作成したファイルと同じ文字のファイルが存在したときは、上書きしてしまうので、注意が必要です。

作業しているファイルの階層に、作成するファイル名と同じファイルが存在しないか確認しておきましょう。

f = open(text.txt, 'w')
f.write('Test')
f.close()

作成された【text.txt】

Test

Python ファイルの作成

Pythonistaも講座で解説されているPycharmと同じように、同じ階層に【text.txt】ファイルが作成され、中身にはTestが入力されています。

組み込み関数のopenメソッドは、open(ファイル名, モード, エンコーディング)のように、引数を3つ使うことが多いようですが、Python公式ドキュメントによるとopenの引数は最大8つで、ファイル名以外の引数はデフォルトで値が入っているので、必須ではありません。

今回のコードは、text.txtというファイルを'w'モードで開いて、writeメソッドでTestと書き込んだあと、closeメソッドでファイルを閉じてくださいという命令になります。

ファイルを閉じるcloseは必ず必要なので、忘れないようにしましょう。

モードは

openメソッドで使えるモードは次の7種類で、今回使用したwは、既存ファイルを上書きするモードになります。

  • 'r':読み込み用に開く(デフォルト)
  • 'w':書き込み用に開いて、既存ファイルが存在する場合は上書きする
  • 'x':書き込み用に開くが、既存ファイルが存在する場合は、エラーを返す
  • 'a':書き込み用に開いて、既存ファイルが存在する場合は末尾に追記する
  • 'b':バイナリモード
  • 't':テキストモード
  • '+':更新用に開いて、 読み書き両方を指定する

第2引数のモードを指定しなければ、デフォルトの読み込み用でファイルが開かれるので、第1引数で指定したファイルが存在しない場合はエラーが返されます。

今回は最初の導入ということで、上書きの'w'モードを使用しています。

printでも書き込み可能

Pythonファイルを出力するときの定番メソッドであるprintでもファイルに書き込みが可能です。

f = open(text.txt, 'w')
print('Test', file=f)
f.close()

作成された【text.txt】

Test

通常のprintメソッドと違うのは、引数にfile=fのように、書き込むファイルを指定する必要があるところです。

ファイルを指定する引数を忘れると、ファイルに書き込むのではなく、コンソールにTestを出力してしまいます。

writeとprint

writeprintを組み合わせて使うことも可能です。

#ファイルの作成
f = open('text.txt', 'w')
f.write('Test\n')
print('My', 'name', 'is', 'Mark', sep=':', end='!', file=f)
f.close()

作成された【text.txt】

Test
My:name:is:Mark!

基本的には、printを使うよりもwriteを使うほうが一般的で、writeメソッドを使うことが多いようです。

コマンドで扱うように

ファイル操作は、Windowsで言うところのコマンドラインやMacのターミナルでファイル操作するような感じがしますが、一つ一つの操作をコマンドで命令するのに対して、Pythonでは、一連の操作をすべてコードにして実行するので、Pythonのほうが高度な作業をしている感があります。

GUI(グラフィカルユーザーインターフェース)を使ったファイル操作は、目に見えてわかりやすいのですが、一つ一つの作業が目に見える分、コマンドを使ったファイル操作に比べて処理速度は遅くなります。

コマンドによる操作は、いちいちマウスを操作する必要がなく、CPUからしても動作結果や動作を描写をしなくていいので、圧倒的に処理にかかる時間が短縮できるのがメリットで、プログラマーの人たちがコマンドラインやターミナルを使ってファイル操作をする理由の一つでもあります。

コマンドを打ち込んでファイル操作をすることにかっこよさを感じる私からすると、いよいよ憧れのプログラマーの領域に入ってきたかな〜という感じを受けているので、ワクワクしながら学習をすすめていきたと思います。

それでは、明日もGood Python!