前提・実現したいこと
app.pyからtest.pyを読み出すことには成功しましたが、test.pyの中にあるtest.txtを読み出すといった1行で詰まってしまいます。textファイルを認識してくれない状態で困っています。
app.py,test.py,test.txtの全ては同じディレクトリ内に存在し、デプロイも正しくできていると思います。
助けていただけると恐縮です。
該当のソースコード
python
1#app.pyのコード 2from flask import Flask, request, abort 3 4from linebot import ( 5 LineBotApi, WebhookHandler 6) 7from linebot.exceptions import ( 8 InvalidSignatureError 9) 10from linebot.models import ( 11 MessageEvent, TextMessage, TextSendMessage,ImageSendMessage, 12) 13import datetime 14import test #test.pyをインポート 15 16 17 18app = Flask(__name__) 19 20 21line_bot_api = LineBotApi('') 22handler = WebhookHandler('') 23 24 25@app.route("/") 26def test(): 27 return "ok" 28 29 30@app.route("/callback", methods=['POST']) 31def callback(): 32 # get X-Line-Signature header value 33 signature = request.headers['X-Line-Signature'] 34 35 # get request body as text 36 body = request.get_data(as_text=True) 37 app.logger.info("Request body: " + body) 38 39 # handle webhook body 40 try: 41 handler.handle(body, signature) 42 except InvalidSignatureError: 43 print("Invalid signature. Please check your channel access token/channel secret.") 44 abort(400) 45 46 return 'OK' 47 48 49@handler.add(MessageEvent, message=TextMessage) 50def handle_message(event): 51 dt_now = datetime.datetime.now() 52 jst_hour=dt_now.hour+9 53 54 55 56 57 58 else: 59 60 if event.message.text=="A": 61 pec=test.main() 62 line_bot_api.reply_message( 63 event.reply_token, 64 TextSendMessage(text=pec))#textファイルを読み出す部分をコメントアウトすれば正しく返り値が送信される 65 66 elif event.message.text=="B": 67 line_bot_api.reply_message( 68 event.reply_token, 69 TextSendMessage(text=f"現在のBの混雑度は??%です。")) 70 71 elif event.message.text=="C": 72 line_bot_api.reply_message( 73 event.reply_token, 74 TextSendMessage(text=f"現在のCの混雑度は??%です。")) 75 else: 76 line_bot_api.reply_message( 77 event.reply_token, 78 TextSendMessage(text=f"入力が間違っています。もう一度入力してください")) 79 80 81 82if __name__ == "__main__": 83 app.run()
python
1import re 2import ast 3import statistics 4 5def main(): 6 7 with open('/home/test_temp.txt', 'r') as f:#この行をコメントアウトしたらラインに返り値であるperの値81が送信される。この行をコメントアウトしないと既読無視状態になる。つまりこの1行が処理できていない。 8 ''' 9 new_temp = (ast.literal_eval(re.findall('[[^]]*]', f.read())[-1])) 10 ave_temp = statistics.mean(new_temp) 11 min_temp = min(new_temp) 12 percentage = int((min_temp / ave_temp)*100) 13 14 #print(new_temp) 15 #print(ave_temp) 16 #print(min_temp) 17 #print(str(percentage) + '%') 18 19 20 ''' 21 per=81 22 return per 23 24 25if __name__ == "__main__": 26 main() 27 28
試したこと
Heroku buildpacksを確認してみるとheroku/pythonと表示されててtextファイルは認識していないのかなと考えています。jsonファイルに変更して、node.jsをpacksに追加したらいけるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/03 07:06