別の問題に関連する私のprevious questionの後に、私はこの問題の枠組みになると考えました。呼び出されたサブプロセスがbashスクリプトを順番に実行しない
NOTEは:私はこのようなファイル構造を持っている
vowpal = subprocess.Popen('../../vowpal.sh',shell=True, stdout=subprocess.PIPE)
vowpal.communicate()
print vowpal.returncode
:私のようなsubprocess.Popen()
、communicate()
、wait()
のすべてのバージョンを、試してみました
├── src
│ ├── main
│ │ ├── costSensitiveClassifier.py
└── vowpal.sh
|
├── data
│ ├── output
│ │ ├── cost
| | |_______openCostClassifier.dat
| | |
そしてcostSensitiveClassifier.py
内
vowpal.sh
というスクリプトを実行しようとしています。このスクリプトは
openCostClassifer.dat
で何らかの操作を行い、同じファイルにいくつかのファイルを出力しますフォルダをそのファイルとして保存します。
costSensitiveClassifier.py内のコードは次のとおりです。
import subprocess
print "Starting cost sensitive predictions using batch script\n"
subprocess.call("../../vowpal.sh")
print "Ending predictions"
そしてvowpal.sh内のコードは次のとおりです。
# !/bin/bash
vw --csoaa 24 data/output/cost/openCostClassifier.dat -f data/output/cost/csoaa.model
vw -t -i data/output/cost/csoaa.model data/output/cost/openCostClassifier.dat -p data/output/cost/csoaa.predict
問題は、bashスクリプトの2行目がある必要があるということは常にあります最初に出力するcsoaa.model
(bashスクリプトの1行目を参照してください)にして、一度終了すると、そのファイルを使用してcsoaa.predict
を出力する2番目の行が実行されます。しかし、これはそうではないと私はbashスクリプトに関連した私のエラーコードで取得するのpythonファイルの実行時に私が取得:
vw (./io_buf.h:123): can't open: data/output/cost/csoaa.modelerrno = No such file or directory
を私はそれは私が(私は適応すべき必要なものであるかどうかわからthis linkが見つかりましたがありませんbashスクリプトが完了して作業する必要があるファイルを作成する予定の時間になるようにスリープしますか?)。
[snakemake](https://bitbucket.org/snakemake/snakemake/wiki/Home)や[ruffus](http://www.ruffus.org.uk)のようなワークフロー管理ライブラリが必要なようです。 /) –
あなたのエラーはあなたのスクリプトが 'csoaa.modelerrno'ではなく' csoaa.model'を探していることを示唆しています。 –