質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

Herokuでのローカルファイルへのアクセス

yamataro0
yamataro0

総合スコア1

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0グッド

0クリップ

1560閲覧

投稿2021/06/18 04:48

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Line API(Bot)開発において,対話相手からメッセージがあるとその内容をローカル(自分のPC)にあるテキストファイルに自動で書き込むシステム

なおwebhookを用いており,オウム返しの動作は下のURLのコードを参考にし,動作を確認した

https://note.com/consultant1221/n/n7084879ae345

発生している問題・エラーメッセージ

FileNotFoundError: [Errno 2] No such file or directory (当然オンライン上で動かしているプログラムなので,ローカルのpathを指定しても動かない)

該当のソースコード

Python

1from flask import Flask, request, abort 2from linebot import ( 3 LineBotApi, WebhookHandler 4) 5from linebot.exceptions import ( 6 InvalidSignatureError 7) 8from linebot.models import ( 9 FollowEvent, MessageEvent, TextMessage, TextSendMessage, ImageMessage, ImageSendMessage, TemplateSendMessage, ButtonsTemplate, PostbackTemplateAction, MessageTemplateAction, URITemplateAction 10) 11import os 12# 軽量なウェブアプリケーションフレームワーク:Flask 13app = Flask(__name__) 14#環境変数からLINE Access Tokenを設定 15LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"] 16#環境変数からLINE Channel Secretを設定 17LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"] 18line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN) 19handler = WebhookHandler(LINE_CHANNEL_SECRET) 20@app.route("/callback", methods=['POST']) 21def callback(): 22 # get X-Line-Signature header value 23 signature = request.headers['X-Line-Signature'] 24 # get request body as text 25 body = request.get_data(as_text=True) 26 app.logger.info("Request body: " + body) 27 # handle webhook body 28 try: 29 handler.handle(body, signature) 30 except InvalidSignatureError: 31 abort(400) 32 return 'OK' 33# MessageEvent 34@handler.add(MessageEvent, message=TextMessage) 35def handle_message(event): 36 37f = open('自分のローカルのテキストファイルのパス', 'w') 38f.write(event.message.text) 39f.close() 40 41line_bot_api.reply_message 42( 43 event.reply_token, 44 TextSendMessage(text=event.message.text) 45 ) 46if __name__ == "__main__": 47 port = int(os.getenv("PORT")) 48 app.run(host="0.0.0.0", port=port)

試したこと

・オンライン上でローカルのファイルにアクセス(file open)を使う方法を調べたが,見つからなかった.
・ネットワークパスについて調べたが,実現したいことに繋がるかわからなかった.

→そもそもセキュリティの都合上オンライン上から自分のテキストファイルに遠隔で書き込むことができない可能性も考えているのですが,知識が浅いため,それができないという知識(理由など)もないので,お手数だとは思いますが,教えていただけると幸いです.

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

ベストアンサー

当然ながらそんなことは不可能。
プログラミング以前の基礎なのでプログラミングから離れて数年くらい「普通にPCを使う」経験が必要。

自分のPCでなんらかのプログラムを動かせば可能だけどそれよりは
Heroku→Google DriveやDropboxなどの外部サービス→自分のPCで同期。

投稿2021/06/18 05:25

kawax

総合スコア10002

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yamataro0

2021/06/18 05:50

はっきりと不可能と教えていただき,ありがとうございます. 私は勉強不足なので,もっと自分で判断できるように精進いたします. さらに,実現のために外部サービスを経由する方法まで提案していただき,ありがとうございました!

0

→そもそもセキュリティの都合上オンライン上から自分のテキストファイルに遠隔で書き込むことができない可能性も考えているのですが

はい、ローカルマシン側にそれに対応した仕掛けを作っておかないと不可能です。

投稿2021/06/18 05:17

maisumakun

総合スコア141476

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yamataro0

2021/06/18 05:51

しっかり読んでいただき,その上で不可能を教えてくださり,ありがとうございます. 別の方法で対話相手の発信内容を受け取るシステムを検討してみようと思います

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。