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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

Q&A

解決済

1回答

3662閲覧

python  昨日はエラーが出なかったのになぜ今日はエラーが

horisuke3232

総合スコア109

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

0グッド

0クリップ

投稿2016/08/24 20:56

Raspberry Piにカメラと人感センサーを繋いで、感知したときに画像を撮るプログラムを本を参考にして実効しました。

python

1import picamera 2 3import time 4import RPi.GPIO as GPIO 5 6PICTURE_WIDTH = 800 7 8PICTURE_HEIGHT = 600 9 10SAVEDIR = "/usr/share/nginx/www/camera/pictures/" 11 12INTAVAL = 60 13 14SLEEPTIME = 5 15 16SENSOR_PIN = 25 17 18GPIO.cleanup() 19 20GPIO.setmode(GPIO.BCM) 21GPIO.setup(SENSOR_PIN, GPIO.IN) 22cam = picamera.PiCamera() 23cam.resolution = (PICTURE_WIDTH , PICTURE_HEIGHT) 24 25 26st = time.time() - INTAVAL 27 28while True: 29 if (GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time() ): 30 31 st = time.time() 32 33 filename = time.strftime("%Y%m%d%H%M%S") + ".jpg" 34 35 save_file = SAVEDIR + filename 36 37 cam.capture(save_file) 38 39 time.sleep(SLEEPTIME) 40

昨夜はこちらでエラーが出なかったんですが、本日実行したところ下記のようなエラーが出ました

cam.py:18: RuntimeWarning: No channels have been set up yet - nothing to clean up! Try cleaning up at the end of your program instead! GPIO.cleanup() Traceback (most recent call last): File "cam.py", line 37, in <module> cam.capture(save_file) File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1377, in capture encoder.start(output) File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 1024, in start super(PiCookedOneImageEncoder, self).start(output) File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 392, in start self._open_output(output) File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 338, in _open_output output = io.open(output, 'wb', buffering=65536) IOError: [Errno 13] Permission denied: '/usr/share/nginx/www/camera/pictures/20160825054457.jpg'

line 1377などそんなに長いコードを書いていないのになぜ表示されるのでしょうか?
根本的な原因はなんでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1377行はライブラリの行数なので、あなたの書いた行数ではありません。
cam.pyの37行目のcam.capture(save_file)でSAVE_DIR配下にパーミッションエラーでカメラのライブラリがファイルが書き込めずにエラーとなっている様です。

特定はできませんが、考えられる原因としては、実行したユーザーが昨夜はrootだったが今日はpiユーザーなどで実行したとかですかね。
/usr/share/nginx/www/camera/pictures/のパーミッションと実行ユーザー(またはnginx起動ユーザー)を確認してみてください。

昨夜の話であれば、historyコマンドでコマンドの履歴を確認してどうやったか(そしてそのユーザーで起動していたのか)見てみるのも手です。

投稿2016/08/24 23:11

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horisuke3232

2016/08/25 10:36

回答ありがとうございました。 回答のとおり、今日はpiユーザーで実行していました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問