Python学習【365日チャレンジ!】91日目のマスターU(@Udemy11)です。
ホームベーカリーでパンを焼くと、朝からパンが焼けたいい匂いが漂ってくるので、それだけで幸せな気分になります。
スーパーで売ってるパン用の強力粉は量が少ないので、ネットで売ってた大袋の強力粉を購入してしまいました。
評価 | 4.5 |
---|
虫がつかないかということが心配ですが、これで当分強力粉のストックの心配をしなくて良くなりました。
ちなみに、小麦粉の【強力粉】と【薄力粉】の違いは、タンパク質であるグルテンの含有量の違いで、グルテンを多く含む強力粉のほうがパン作りに適しているということだそうです。
それではさっそくPython学習をはじめましょう!
昨日の復習
昨日は、withステートメントでファイルを開く方法について学習しました。
組み込み関数のopen
で上書きモードでファイル名を指定すればファイルを作成することができましたが、最後にclose
でファイルを閉じる必要がありました。
with
ステートメントを使えば、close
を使わなくても処理が終了した時点でファイルを閉じてくれます。
with open('text.txt', 'w') as f:
f.write('How are you?')
with
ステートメントは、呼び出したときと処理が終了したあとに何かをさせることが可能なので、これから出番が多くなるということでした。
それでは、ファイルの読み込みを学習しましょう!
ファイルの読み込み
まずは、テキストファイルに複数行の文字列を入力したファイルを作成します。
t = """\
aaaaa
bbbbb
ccccc
ddddd
"""
with open('text.txt', 'w') as f:
f.write(t)
このコードを実行すると、【text.txt】が作成されて、中身は次のようになっています。
4行目の最後の改行は、\
を入れていないので、空白行が入っています。
aaaaa
bbbbb
ccccc
ddddd
このテキストファイルを読み込んでいきます。
with open('text.txt', 'r') as f:
print(f.read())
出力結果
aaaaa
bbbbb
ccccc
ddddd
ファイルの読み込みもwith
ステートメントを使うことができ、read
メソッドで、ファイルの中身をすべて表示することができます。
“””(トリプルクォーテーション)
この時点で、"""
ってコメントアウトじゃなかったっけ?
と思う人がいると思うので、少し復習しておきましょう。
"""
や'''
は、複数行にわたるコメントアウトのための記号でもあり、print
や変数の定義の際に改行をそのまま認識させる使い方もあります。
行の始めにインテントなしで記述すれば、コメントアウトになるし、print("""
やa = """
のような書き方をすれば、改行をそのまま認識させる文字列になります。
このあたりのことは、次のエントリーで説明しているので、参考にどうぞ。
1行ずつ読み込み
read
でファイルの中身を一気に読み込みましたが、while
文とreadline
を使って、1行ずつ読み込むことも可能です。
with open('text.txt', 'r') as f:
while True:
Line = f.readline()
print(Line, end='')
if not Line:
break
while
文覚えてますか?
条件がTrue
の間は繰り返すってやつです。
このコードは、変数Line
に【text.txt】の行を順番に代入し、print
による改行を除いて出力することを繰り返して、変数Line
がFalse
になればwhile
ループを抜けるということになります。
print
出力は、最後に改行コードが入るので、end=''
で改行を取り除いています。
なので、出力結果は、f.read()
による出力と同じになります。
aaaaa
bbbbb
ccccc
ddddd
かたまりごとに読み込む
1行ずつ読み込みましたが、指定した文字の塊ごとに読み込むことも可能です。
IT用語では、ぶつ切りや塊といった意味の【チャンク(chunk)】という単語を使いますが、指定したチャンクごとに読み込んで出力することができます。
with open('text.txt', 'r') as f:
while True:
chunk = 2
Line = f.read(chunk)
print(Line)
if not Line:
break
出力結果
aa
aa
a
bb
bb
b
cc
cc
c
dd
dd
d
今回は、print
でend=''
を指定してしまうと、print
のあとの改行が省かれて、【text.txt】に記載されているとおりに出力されてしまい、チャンクごとに読み込まれているかどうかがわからないので、end=''
を省いて出力しました。
ちなみに、【text.txt】内の改行がカウントされているため、3行目は、a
と改行が一つのチャンクとして出力されています。
なんだchunkって?
今回のレクチャーでは、いきなりchunk
という言葉が出てきたので、一瞬戸惑ってしまいました。
そんなときは、Goolge先生の出番で、調べてみるとすぐに答えを教えてくれます。
オンライン講座のUdemyに限らず、リアルな講座でもわからないことはまず、自分で調べてみることが大切です。
調べてみてわからなかったり、調べたことが合っているか不安な場合は、質問すれば答えてくれます。
リアルな講座の場合は、なかなか聞くことができないことも、オンライン講座のUdemyなら講師の方に訪ね放題ですし、レスポンスも早くてすぐに問題解決につなげることが可能です。
このあたりのインタラクティブなところがUdemyの人気の秘訣なので、まだUdemyの講座を受講されていないのなら、ぜひ、興味のある講座を受講されることをおすすめします。
私が現在受講している酒井さんのPython講座は一通りPythonを学習することができるので、おすすめですよ。
それでは、明日もGood Python!