###### tags: `Python勉強会` # 【51期】Python勉強会 第7回 :::info **<第7回Web会議日程>** 2024年05月15日(水) 19:00から ::: ## 第7回 課題 ### ■ 課題の前に。。。 #### 入力内容が「入力」「出力」から始まった場合の分岐追加 ・各自の関数の最後のELIFの後に、以下の記述を追加 ```python # LINEで入力内容が「入力」から始まった場合 elif from_text.startswith('入力'): # s3_functionモジュールのs3_input関数を呼び出す to_text = s3_function.s3_input(from_text) # LINEで入力内容が「出力」から始まった場合 elif from_text.startswith('出力'): # s3_functionモジュールのs3_output関数を呼び出す to_text = s3_function.s3_output(from_text) ``` ### ■ 課題 **現在、「<span style="color:blue">lambda_function.py</span>」は、以下のようにLINEで入力した場合、** **2行目をキー、3行目を値としたJSONファイルをS3に書き込みます。** ![](https://hackmd.io/_uploads/HJhh5w542.png) **上記に以下のようにLINEで入力した場合、S3のJSONファイルを読み込み、** **キーに対応する値をLINEに応答する処理を追加してください** ![](https://hackmd.io/_uploads/BJqp9Pq4n.png) ----- ### ・前回からの変更点 ![](https://hackmd.io/_uploads/BkWnXbi43.png) ①個人のスマホからLine公式アカウントにメッセージ送信 ②Line公式からWebhookしたAPI GatewayのURLへメッセージを送信 ③API Gatewayに関連付けられたLambdaを呼び出し <span style="color:red">④S3にあるファイルを読み込み</span> ⑤Lambdaで作り込んだ処理に沿ってメッセージを応答 ------ ### ■「<span style="color:blue">s3_function.py</span>」概要 #### 1 . 1.s3_file_read関数を定義(S3ファイル読み込み) * S3にある「fm_pys_XXX.json」を読み込み、 jsonデータをPython処理のため辞書型として変数「json_data」に格納 #### 2 . s3_input関数を定義(入力内容をS3に書き込む) * LINEの入力内容が「入力」から始まった場合(startswith)の処理を定義 * s3_file_read関数を実行し、S3のファイルを読み込む * 変数「from_text」には、LINEでの入力内容が以下の文字列として入っている ```python '入力\n明日の予定\n仕事' ``` * 入力内容を改行コードで区切って変数「str」にリスト型で格納 ```python ['入力', '明日の予定', '仕事'] ``` * 「str」の要素数が2より大きい場合、3要素目以降をfor文で変数「Register」に追記 「json_data」にリストの2要素目をキー、「Register」を値とした辞書型の要素を追加 ```python {'明日の予定': '仕事'} ``` * 「json_data」をjson形式に置換し、S3にアップロード ------ ### ■「<span style="color:blue">s3_function.py</span>」修正箇所 #### 1 . s3_output関数を定義(S3ファイルを読み込む) * LINEの入力内容が「出力」から始まった場合(startswith)の処理を定義 * s3_file_read関数を実行し、S3のファイルを読み込む * 変数「from_text」には、LINEでの入力内容が以下の文字列として入っている ```python '出力\n明日の予定' ``` * 入力内容を改行コードで区切って変数「str」にリスト型で格納 ```python ['出力', '明日の予定'] ``` * **「json_data」の辞書型から、リストの2要素目をキーとして値を受け取り、「to_text」に代入する** ------ ### ■ JSONについて :::warning **<JSONとは>** 「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトの書き方を元にしたデータ定義方法」のこと **<JSONの形式>** ・{} の中にキーと値をコロンで区切って記述 ・カンマで区切ると、キーと値の組み合わせを複数記述可能 ・[]を使うことで配列の表現も可能 ⇒Pythonでは、**辞書型**として取り込むことが可能 ::: ------ ### ■ S3のファイルについて :::warning **<ファイルの場所>** 以下に各自の番号でファイルが作成される s3://fm-python-study/fm_pys_XXX.json ファイルの中を確認したい時は直接参照することも可能です リセットしたいときは、ファイルを削除してください :::