Python超初心者の私がはまったことをメモ書き程度に書いていこうと思います。
絶対パスと相対パスではまった・・・
ラズパイに手を出したタイミングでPythonをはじめて触りました。なのでpython超初心者です。
ラズパイと超音波センサーを組み合わせて、ある一定距離まで近づいたら、音声ファイルを再生するようなプログラムを書きました。
内容は、実際に取得した値(距離)をログファイルに書き出し、80cm以下になったときに音声ファイルを再生させました。
まず、pythonファイルを手動でコマンドを実行!
センサーに手を近づけると正常に音声ファイルを実行してくれました。
その次にラズパイを起動したとき、自動でpythonファイルを実行するように手を加えました。
(/etc/rc.localにコマンドを追記するだけの簡単なお仕事)
ラズパイを起動後、ログファイルを開き、センサーが動いていることを確認した後、センサーに手を近づけると、
あれ?音声ファイルが再生されない・・・でも値は80cm以下になってる・・・どうなってるんだってばよ・・・
プログラミング自体初心者の私はこの時点で軽く混乱してしまいました。
いろいろと試行錯誤をした結果、音声ファイルを再生するpythonファイルを指定するパスが相対パスで書かれていたのが原因でした。
・変更前
if (read_distance()) < 80:
check = subprocess.Popen(['python','music.py'])
print check
・変更後
if (read_distance()) < 80:
check = subprocess.Popen(['python','/home/pi/music.py'])
print check
今まで相対パスで書くことが多かったので、無意識に相対パスで書いてしまいました。
相対パスで書いてしまうと、基準となるディレクトリが変わってしまうので、絶対パスで書いておくのが無難みたいですね。
こんな簡単なことでも、忘れたころに同じ過ちを繰り返さないように書いておこうと思いました。
新しい言語でプログラミングするのは忍耐力が必要だと感じています・・・