とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

Python ファイルの読み書きを行う

WindowsでPython シリーズ その26


今回はサラッとファイルの読み書きの基礎をまとめます。

ファイルの読み書きの手順


どのプログラム言語であれ、ファイルの読み書きの基礎は決まっています。

  1. ファイルを開く
  2. ファイルを読み書きする
  3. ファイルを閉じる

です。

これをPythonの命令後に置き換えると・・・

  1. ファイルを開く → open()
  2. ファイルを読み書きする → read() / write()
  3. ファイルを閉じる → close()

となります。
自分でマウスで開いてファイルの中身を見る時も同じですね。

手順通りにPythonコードを書く


とりあえず、Pythonコード(main.py)と読むためのテキストファイル(sample.txt)を用意しました。
Python ファイルの読み書きを行う


sample.txt の中身はこんな感じです。
「月が綺麗ですね。」
「は?」
「・・・・・」
ファイルはメモ帳で作ったので、S-JISのエンコードです。

作ったテキストファイルの中身を読んで、文末に追記したいと思います。
例によらず、マニュアルに沿って構文を確認
ファイルを開く方法はopen 関数を使うとあり、その引数を確認。
'r+' はファイルを読み書き両用に開きます。
とのことなので、このようなコードを書く。



実行結果
Python ファイルの読み書きを行う

sample.txt の中身もきちんと書き換わってますね。
Python ファイルの読み書きを行う

簡単に解説


とてもシンプルなので解説は不要かもしれませんが念のため
open()関数

open()関数にファイル名、オープンモード、文字のエンコードを指定しています。
今回は"s-jis"エンコードのファイルを開くので"sjis"を指定、そして、読み書きをしたいので引数を名前指定でmode="r+"としています。
この指定により、読み書きを行うモードでファイルを開くことになります。

read()とかwrite()とか

read で中身を読み込み、writeで末尾に指定した文字列を書いています。
ここで、"\n"としているのはなぜか・・・windowsユーザーなら"\r\n"としたいところですが、
こうすると、改行が余計に入って表示されました・・理由は謎です。いつか解明したい(誰かコメント下さい!

seek()関数

seek は、ファイルを読み込んだ場所を表します。
一旦readでファイルの最後まで読んで、文字を追記したので、読んだ場所はファイルの最後の位置にいます。
マウスカーソルで例えると、ファイルの最後にカーソルがある状態です。
readは、カーソルの位置から後ろを読み込むので、readした後にさらにreadしてもファイルの内容を読み込むことができません。
(ファイルを読むためのマウスカーソルが一番末尾にあるので、それ以降を読んでも意味がないと思ってください。)
よって、seek(0)の命令で、カーソル位置を一番最初に戻しています。

ファイルは閉じよう


最後に f.close() としているのは、きちんとファイルを閉じるという操作が必要だからです。
これを忘れると、ファイルが開きっぱなしになりますので注意してください。

今日はファイル操作の基礎中の基礎をやりましたが、プログラマとしては不十分です。
次回はきっちりとファイルを操作するお作法を勉強したいと思います。
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/186-4bc0f526
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad