• 締切済み

python3.2で外部プログラムを実行&操作

民安TALKという音声読み上げソフトを実行&操作するプログラムがあります。これをpythonで書いてみようと思ったのですが、どうすればいいのかがわかりません。 <環境など> 民安TALK(ソース) http://uep.s321.xrea.com/src/index.html OS:Windows7 version:python3.2 <具体的にどうしたいのか> テキストを入力し、再生ボタンを押すとテキストを読みあげるプログラム(.exe)に対し、そのプログラムがまだ起動していなかったら起動して、テキストを入力し、再生ボタンを押すということをやりたいです。ちなみに再生ボタンにはショートカットキーは設定されてません。 現在、プログラムを起動するところで詰まっています from subprocess import Popen p = Popen("絶対path") とすると外部プログラム(.exe)を実行できると思うのですが、これだと設定ファイルの読み込みに失敗してしまいます。pythonからではなく、コマンドプロンプトでカレントディレクトリをその外部プログラムのあるディレクトリに移動しプログラム名.exeとすれば実行できます。

みんなの回答

  • struct
  • ベストアンサー率72% (32/44)
回答No.1

要するに、その「民安TALK」というプログラムは 設定ファイルをカレント・ディレクトリから読み取るので 起動に失敗してしまうということですね。 それなら、Popen の cwd にディレクトリを指定してください。 import os from subprocess import Popen path = "絶対path" p = Popen(path, cwd=os.path.dirname(path)) 事前に python のカレント・ディレクトリを変更しておく方法でも大丈夫です。 import os from subprocess import Popen path = "絶対path" os.chdir(os.path.dirname(path)) p = Popen(path)

mikuriya8000
質問者

お礼

ありがとうございます。なるほど、cwdを設定すればよかったんですね!

関連するQ&A

  • Pythonのプログラムの実行の考え方について

    pythonの教科書のサンプルの実行についてお尋ねします。 テキストのサンプルには普通、インタープリターで書いてあるものと、プログラムをファイルに書き出してそれをコマンドで一気に処理するもの(こちらの方が他の言語の実行に近いか)の2通りがあります。 インタープリター向きに記述されたものをファイルに書き出してpythonコマンドで、インタープリターと同じように実行するにはどのような書き換えが必要になるのでしょうか。結果を出力するときにインタープリターでは配列名を入力するだけでその内容が出力されたりしますが、ファイルではそれができないのでコマンドを指定するとかになると思いますが、他になにかあるでしょうか。 ファイルに書き出したプログラムの実行ですが、Pythonコマンドを実行しても実行形式の出力がないのでコンパイルではないわけですが、これはバッチとかシェルスクリプトと同じような意味になるのでしょうか。1行1行実行していくということですが。とするとインタープリターと同じになるのかなと思うのですが。 実行形式が単体のファイルとして出力されて単体として実行できるというのは従来のプログラム(C,Fortranなど)ですが、Pythonはそれがないわけですね。Ruby, Perlに近いものなのでしょうか。速度が求められる科学技術計算ではライブラリを導入して高速化できるということですが、どの程度かなと思いますが。その中間的なものがJavaなのかなと思いますが(半分実行ファイルみたな)。 たぶんベタな質問と思いますが、よろしくお願いします。

  • Rubyから外部プログラムを実行し、その出力を..

    Rubyから外部プログラムを実行し、その出力を受け取り、加工したいのですがよくわかりません。 stdin, stdout, stderr = win32-open3.popen3("XXX.exe") とすれば何とかいけそうなんですが、win32-open3が今は使われていないようです。 他に代わるものがあるのでしょうか? ちなみに、Rubyのバージョンは1.8.7です。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • python3で外部プログラムにテキスト挿入

    python3,2を使って外部プログラムのテキストボックスにテキストを挿入しようとしています。 ctypesでクリップボードを使えばできるかな~などと思っていたのですが、使い方がよくわからず・・・ ハンドルは取れるんですが、そこからがよくわかりません。 どなたか教えて下さい。よろしくお願いします。

  • 外部プログラムを実行してそのプログラム中のキー入力を自動で行うにはどうしたらいいか?

    現在C++でプログラミングを組んでいるものです。 外部プログラムを実行させ、外部プログラム実行中に求められるキー入力を自動で行えないかと考察しているのですがわかりません。。。 外部プログラムといっているのは、現在C++で書いていて その中でsystemコマンドを使い他のexeを実行しているので。 求められるキー入力はDOS窓の画面で ------------------------------------ 上記の設定でよろしいでしょうか?> y ------------------------------------ 上記の『y』の箇所のみで『y』+Enterでその後の処理が走り出すというもので、毎回聞かれる『y』の入力を自動化したいのですが 何か方法は無いものでしょうか?? exeファイルしかなく修正もできないのでなんとか自動的に入力まで含められないかと考えてます。 みなさんどうぞよろしくお願いします。

  • pythonでバッチファイルを実行

    こんにちわ。pythonを使っています。pythonで外部プログラム(バッチファイル)を実行させたいのですが記述の方法がわかりません。是非 お力をお貸しください。

  • 外部プログラムを実行する方法について

    お世話になります。 データが更新された段階で、外部プログラム(xxx.exe)を実行したいと考えております。 おそらく、トリガを利用すれば可能かと思い調査しておりますが、 どのようにして外部プログラムを実行すればよいか分かっておりません。 ご存知の方、ご教示頂けないでしょうか。 よろしくお願いいたします。

  • pythonによるプログラムのコンパイルと実行

    Linux上ではプログラムの実行ファイルの作成は基本はmakeだったと思います。ワンパターンでmakeでMakefileに書いてあることが淡々と進行して実行ファイルができ、それを./abcなどと入力して実行する、そういうパターンだったと思います。make cleanとかおなじみだったと思います。最近はsetup.pyのようなものが用意されてpython setup.pyとすればコンパイルとか実行もそれだけでやってくれます。これは従来のmake系のこととはかなり違いますが、一方でpythonの中でmakeされているということになるのでしょうか。つまり、見た目が違うけれども裏側でやっていることは同じというコンセプトです。この辺をどう理解したらいいのでしょうか。pythonをc++, Javaのようなものと同格のもの捉えるものではないということになるのでしょうか。上記はunix, Linuxの例でしたが、Windows,Macではどういう位置づけになるのでしょうか。pythonを別格と考えるべきものでしょうか。

  • BASP21 で 外部プログラムが実行できない

    BASP21 をインストールしました。 Execute を使って、外部プログラム(例 notepad.exe) を実行したいのですが、一向に起動しません。 何が間違っているのでしょうか。 <% Set bobj = CreateObject("basp21") (1) rc = bobj.Execute("notepad.exe", 0, stdout) (2) rc = bobj.Execute("notepad.exe", 1, stdout) (1)はページ表示後、すぐに帰ってきます。 rc の中身は 0 です。 しかし、起動しません。 (2)はページを読み込み中のまま、10分待っても 20分待っても帰ってきません。 rc の中身は不明です。 以上、会社で困ってますのでよろしくお願いします。

  • exeファイルをプログラムから操作する。

    お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

  • cmd.exe無しでPython実行

    Pythonで書かれたGUIのスクリプトを起動するとどうしてもDOS窓が起動してから その上にTkinterとかのウインドウがでてきてしまい、これがいやなのですが 何とかしてPythonスクリプトを普通のwindowsプログラムみたいに実行する方法は ないでしょうか?