参考記事
- Pepperでファイル保存したり取り出したり
- Python で、既存のテキストにデータを書き加えたいと思っています。 - OKWave
- Python – ファイル入出力 ファイルへのテキスト書き込み - あるエンジニアの不定期勉強記録
動機
大学院(IAMAS)の講義でPepperをいじる予定だったが、Pepperが届かないためNAOを使っている。かなり苦戦している。
目のカメラでLINEのQRコードを読み込ませて、友だち追加用URLをNAOの中にストックさせるクズロボットをつくろうと思った。
スタンドアロン環境でやるには、**読み込むたびに、アドレスをtextファイルに追加しなくてはいけない。**この講義で初めてPythonを読んだ、変数の指定の仕方もわからないクソ初心者なので、qiitaの練習がてら、とりあえず書き残そうと思った。
方法
Pepperでファイル保存したり取り出したりの、Write Text
とRead Text
を参考に、保存されているテキストを一旦読み込んで、新規テキストを書き込み、その下に保存されていたテキストを書き込む、という手順を踏むことにした。下記の2つを参考。
プログラム
Write Text
の、onInput_onStart
を下記の通り書き変える。
def onInput_onStart(self, text):
import codecs
try:
with codecs.open(self.getParameter("File path"), "r", self.getParameter("Encoding")) as f:
text2 = f.read()
with codecs.open(self.getParameter("File path"), "w", self.getParameter("Encoding")) as f:
f.write(text.decode("utf8"))
f.write('\n'.decode("utf8"))
f.write(text2.decode("utf8"))
self.onStopped()
except IOError as e:
self.logger.error("Failed: %s" % str(e))
self.onFailure(str(e))
- text2とかじゃない、もっとスマートな変数はあるかもしれない。
- もっとスマートな改行もあるかもしれない。
他、ひっかかったとこ
NAOの内部にテキストを保存するには、File Pathを/home/nao/***.txt
にする必要がある。.txtじゃなくてもいいのかも。
NAOの内部ストレージのアドレスが/home/nao/
なんですね。これはあちこち探してもあんまり書いてなくてひっかかった。
結果
QRコードの読み取り結果が一行ずつ保存されるようになったよ!**これでうまくQRコードかざしてもらえば、後からtext抜き出してURL打ち込んだら友達がふえるよ!**やったねたえちゃん!
ていうかネットつながってれば、こんなめんどくさいことしなくても、メールで送るなりやり方いっぱいありそう。
最後に
Pepperいじりたい