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

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

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

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

Raspberry Pi

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

Q&A

解決済

2回答

7422閲覧

subprocess使用時にエラー

takapinx

総合スコア9

Python 2.7

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

Raspberry Pi

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

0グッド

1クリップ

投稿2015/08/24 14:24

OS:Rapsbian
Python2

現在、BeautifulSoupでスクレイピングした文字をsubprocessを使い、OpenJtalkでスクレイピングした文章を音声出力しようとしていますがエラーが出てしまいます。

import urllib2
from bs4 import BeautifulSoup
import sys
import os
import subprocess

req = urllib2.urlopen("http://www.jma.go.jp/jp/yoho/329.html")

soup = BeautifulSoup(req, "html.parser")

#print(soup.select(".textframe")[0].text)

s = soup.select(".textframe")[0].text

subprocess.call('/home/pi/jsay.sh, s')

エラーは
Traceback (most recent call last):
File "ScrapWeather.py", line 16, in <module>
subprocess.call('/home/pi/jsay.sh, s')
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

どなたか解決方法を教えてください。
お願いします。

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

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

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

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

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

guest

回答2

0

よくわかんないですけど「ノーさちファイルオアディレクトリ」なんじゃないですかね。
まあ常識的に考えれば引用符をミスっちゃってるように見えますけどね。常識的に考えればですけど。

投稿2015/08/24 19:39

henpon

総合スコア40

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

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

takapinx

2015/08/25 05:39

ありがとうございます!
guest

0

ベストアンサー

henponさんのご指摘通り、単純に/home/pi/jsay.sh, sというコマンドを実行しようとしても見つからない!と言っているだけでは?
もしsという文字列変数の中身がjsay.syスクリプトに渡したい引数なのであれば、全体をクウォートするのではなく配列で渡す必要が有ります。例えば以下のような感じで(動作確認してないので誤りがあったらすみません)。

python

1subprocess.call(["/home/pi/jsay.sh", "s"])

(ご参考)

投稿2015/08/25 04:57

pi-chan

総合スコア5936

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

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

takapinx

2015/08/25 05:47

ありがとうございます。たしかにそうでした(笑) 初歩的なことでした。 pi-chanさのとおりにプログラムを書き換えたらエラーは消えましたが、しゃべらせたい内容ではなく"S"と発音してしまいました。なので先にしゃべらせたい内容を.txtで保存して、それをopenjtalkにしゃべらせようとしたらエラーがでてしまいました。 最初の質問と求める答えが変わってしまいますが、もしよければ教えてください。 import urllib2 from bs4 import BeautifulSoup import sys import subprocess req = urllib2.urlopen("http://www.jma.go.jp/jp/yoho/329.html") soup = BeautifulSoup(req, "html.parser") f = open('/home/pi/Desktop/MyPython/weather.txt',"w") f.write(soup.select(".textframe")[0].text.encode('utf-8')) f.close() s = soup.select(".textframe")[0].text subprocess.call(["/home/pi/jsay.sh","/home/pi/Desktop/MyPython/weather.txt"]) エラー WARNING: JPCommonLabel_insert_word() in jpcommon_label.c: First mora should not be short pause. 少し調べたところ、しゃべらせたい文章の先頭に全角のスペースがあるとこのエラーがでるそうなのですが、いれていません。 よろしくおねがいします。
pi-chan

2015/08/28 10:41 編集

Open JTark の使い方を全く知らないのですけど・・・ 引数に "s" を渡して `s` と話すなら、テキストファイルの内容の「文字列」をそのまま配列に格納して渡せば良いだけでは?? きっとファイルの内容を読み取る作りになっておらず、渡されたファイルパスの先頭が `/` という「発音出来ない」文字なので、このようなエラーが出ているのですよ。
pi-chan

2015/08/28 10:39

まずは、Open JTark そのものの使い方を、[こちら](http://pochi.usamimi.info/linux/open_jtalk.html) のページ等で再確認してみてはいかがですか? どうやら、テキストファイルの内容を話させたい場合は、第一引数に配列の要素としてパスを渡すのではなく、第三引数(第二引数のオプションの後ろ)に設定するらしいですよ。 #上記リンク先のページの最後の部分をご確認ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問