- ベストアンサー
Pythonで本ススクリプト内で別スクリプトを実行
Python2で書かれたスクリプトA(インターネット上に落ちていたものでlibフォルダとか色々あり)があって、本スクリプトから引数を渡して実行させたいです。本スクリプトは単純で、インプットフォルダをループで回してファイル名を取得してから、スクリプトAに引数としてインプットファイル名と、アウトプットフォルダ名を流し込むだけです。どう書けばよいでしょうか。 exec,execfileなども試してみましたが、引数を渡して実行させる方法がわかりませんでした。 よろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
もし本スクリプトをPython2で書いているのなら、スクリプトAをimportして関数やメソッドとして呼び出せばよいです。しかし、この質問をしたということはおそらく本スクリプトをPython3で書かれていることでしょう。 スクリプトAに対して引数を - コマンドライン引数として渡すのか - 関数・メソッド呼び出しの引数として渡すのか によって手数が変わります。いずれにせよ最終的にコマンドライン引数としてスクリプトAに引数を渡せるようにしたうえで、subprocessを利用すると実行できます。 コマンドライン引数としてスクリプトAに引数を渡せるようにする場合の例として、Python2でスクリプトAをラップするスクリプトA´を新たに作成する方法が考えられます。具体的にはコマンドラインから引数を受け取り、その引数をスクリプトAに渡して実行するものです。 subprocessを使って実行する場合の記述は次のような雰囲気になるでしょう。 subprocess.run([python2のパス, スクリプトA´, 引数1, 引数2]) 詳細な利用方法については公式ドキュメントをご覧ください↓ https://docs.python.org/ja/3/library/subprocess.html
お礼
返信が遅れてすみません。おっしゃるとおりで本スクリプトはPython3です。教えていただいた箇所ですが、正直違いが理解できませんでした。ただsubprocessを使って実行するということだけ分かっただけでも良かったです。 結局拾ってきたスクリプトでは文字コードの問題でうまくいかず、全く別の方法で処理しました。一応スクリプトのはじめにUTF-8のおまじないなんかも試しましたがだめでしたので。 ありがとうございました。