Python seekメソッド

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

どうでもいい話なのですが。。。

コメントキャラ

どうでもいい話やったらせんといてくれるか〜!

というしょうもないノリツッコミからはじめてしまい、このあとどうしたもんかな?と思っちゃっていますが、とりあえず、話を聞いてください。

先日、トイレの暖房便座が故障してて、朝方便座に座ったときにめっちゃ冷たくて叫んでしまいました。

早速、TOTOに連絡して、修理をお願いしようと思ったのですが、古すぎて修理の部品がないとのこと。

また、新しい便器に交換しようと思っても、中国から製品が入ってこなくて、今は新築のお家も便座がこないので、引き渡しが遅れてしまっているとのことでした。

とりあえず、在庫のある商品を紹介してくれたので、値引き交渉をして、無事新しい便器に交換してもらうことができました。

これまでの便器は、すでに20年近く使っていたので、ここまで故障せずに頑張ってくれたことに感謝しながら、最後のお掃除をしてあげて別れを告げました。

新しく我が家に来たのがTOTOのアプリコットシリーズで、トルネード流しでこれまで使っていた便器に比べ約1/2の水量で水を流すことができるらしく、たしかにこれまでより流れる水の量は少ないにも関わらず、きちんと流してくれるので、とても満足しています。

TOTO アプリコット

もしあなたが、20年近く頑張っている便器を使っているのなら、故障の際は、まるごと替えることをおすすめします。

ほんと、どうでもいい話になってしまいましたが、今日もPython学習をはじめていきましょう!

昨日の復習

昨日は、ファイルの読み込みについて学習しました。

t = """\
aaaa
bbbb
cccc
dddd
"""
with open('text.txt', 'w') as f:
    f.write(t)

with open('text.txt', 'r') as f:
    while True:
        Line = f.readline()
        print(Line, end='')
        if not Line:
            break

出力結果

aaaaa
bbbb
cccc
dddd

このコードは、【text.txt】ファイルに複数行を上書きして、whileループを使って、テキストから行ごとに読み込んで出力しています。

他にもかたまりごとに読み込むchunkという言葉も学習しました。

詳しくはこちらのエントリーをごらんください。

今日は、seekを使ったカーソル位置の移動について学習します。

seekで移動

seekは、カーソルの位置を指定する関数で、読み込みを始める位置を移動させることができるメソッドです。

また、tellは、現在のカーソルの位置を読み込むメソッドです。

これら2つのメソッドを使って、現在のカーソル位置(読み込み位置)を確認することができます。

【text.txt】

aaa
bbb
ccc
with open('text.txt', 'r') as f:
    print(f.tell())
    f.seek(4)
    print(f.read(1))

出力結果

0
b

このコードでは、【text.txt】ファイルを読み込みで開き、2行目のf.tell()によって、カーソルの位置を呼び出して出力しています。

その後、seek(4)によって、カーソルを4の位置に移動したあと、f.read(1)で文字を一つ読み込んで出力しています。

出力結果は、2行目の出力が0で、4行目の出力では、4番目の文字bが出力されています。

位置番号は、0から始まるので、3の位置は、改行になり、seek(3)もしくはseek(7)で移動したあとf.read(1)を出力すると、改行が出力されます。

ちなみに5行目にprint(f.tell())を記述して、カーソルの位置を出力すると、seek(4)で移動した4から、一つ足された5が出力されます。

処理がすめば、位置を進めているということですね。

使う場面はあまりない?

現在のカーソルの位置を設定して、読み込み位置の指定ができるので、使い方によっては便利な場面もあるのかもしれませんが、酒井さんの講座では、あまり必要がないと話されていました。

とはいえ、こんなこともできるよという程度に覚えて置いたほうがいいでしょうとのことなので、出てきたときに理解できる程度に頭の片隅に入れておこうと思います。

これまで学習してきた内容は、実用でよく使うものから、一部のプログラマーが使っている可能性のあるものまでさまざまなコードを紹介していますので、ふと思い出したときなどに、復習をして頭の中に入れるようにしましょう!

今日の内容は、ちょっと箸休め程度で物足りないかもしれませんんが、たまにはボリュームの少ない内容で、頭もリフレッシュしたほうがいいですよね。

ということで、本日はこのへんで。

では明日もGood Python!