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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

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

Q&A

0回答

2081閲覧

Python2.7でデバイスファイルがreadlineできない

mukoda

総合スコア8

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

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

0グッド

0クリップ

投稿2018/04/22 13:20

###環境
・Ubuntu Server 16.04 LTS
・Raspberry pi3
・ROSを使用してPimouseを動かしている
###参考書
・上田隆一「RaspberryPiで学ぶROSロボット入門」
###問題点
デバイスファイル/dev/rtbuzzer0をPython2.7の環境でreadlineしようとすると以下のエラー文が発生します。

$ ls -l /dev/rt* crw-rw-rw- 1 root root 242, 0 4月 9 16:09 /dev/rtbuzzer0 crw-rw-rw- 1 root root 233, 0 4月 9 16:09 /dev/rtcounter0 crw-rw-rw- 1 root root 234, 0 4月 9 16:09 /dev/rtcounter_l0 ..... $ python >>> f=open("/dev/rtbuzzer0","r") >>> data=f.readline() Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 22] Invalid argument

参考書では.pyファイルに以下のような内容を書いて同様のエラーがrostestで発生し、pythonに直打ち(上記)してもまたエラーが発生したので質問させていただきました。

python

1#!/usr/bin/env python 2import rospy, unittest, rostest 3import rosnode 4import time 5from std_msgs.msg import UInt16 6 7class BuzzerTest(unittest.TestCase): 8 def test_node_exist(self): 9 nodes=rosnode.get_node_names() 10 self.assertIn('/buzzer',nodes,"node does not exist") 11 def test_put_value(self): 12 pub=rospy.Publisher('/buzzer',UInt16) 13 for i in range(10): 14 pub.publish(1234) 15 time.sleep(0.1) 16 17 with open('/dev/rtbuzzer0','r') as f: 18 data=f.readline().strip() 19 self.assertEqual(data,"1234\n","value does not wrriten to rtbuzzer0") 20 21if __name__=='__main__': 22 time.sleep(3) 23 rospy.init_node('travis_test_buzzer') 24 rostest.rosrun('pimouse_ros','travis_test_buzzer',BuzzerTest) 25
$ rostest pimouse_ros test.launch ... logging to /home/ubuntu/.ros/log/rostest-ubuntu-7615.log [ROSUNIT] Outputting test results to /home/ubuntu/.ros/test_results/pimouse_ros/rostest-launch_test.xml [Testcase: testtest_buzzer] ... ok [ROSTEST]----------------------------------------------------------------------- [pimouse_ros.rosunit-test_buzzer/test_node_exist][passed] [pimouse_ros.rosunit-test_buzzer/test_put_value][ERROR]------------------------- [Errno 22] Invalid argument File "/usr/lib/python2.7/unittest/case.py", line 329, in run testMethod() File "/home/ubuntu/catkin_ws/src/pimouse_ros/test/travis_test_buzzer.py", line 18, in test_put_value data=f.readline().strip() -------------------------------------------------------------------------------- SUMMARY * RESULT: FAIL * TESTS: 2 * ERRORS: 1 * FAILURES: 0

ご協力、ご教授のほど宜しくお願い致します。

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

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

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

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

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

miiika

2018/05/01 09:48

あてずっぽうです。f=open("/dev/rtbuzzer0","r")の箇所ですが、f=open(u'/dev/rtbuzzer0','r')だとどうなりますか。
mukoda

2018/05/01 14:11

ご回答ありがとうございます。試してみましたが、やはり同様のエラーが出てきます。
miiika

2018/05/02 03:59 編集

なるほど。通常のファイルを開いても同様のエラーがでますか。あと、一応`python --version`の結果も張ってもらえますか。
mukoda

2018/05/07 02:46

返信が遅れてしまい申し訳ございませんでした。Python 2.7.12と表示されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問